{"_id":"angular-universal-pwa","_rev":"85-70f0302af9b2cd35cc829682486f95b0","name":"angular-universal-pwa","dist-tags":{"latest":"2.1.1"},"versions":{"1.0.0":{"author":"","name":"angular-universal-pwa","version":"1.0.0","description":"Angular Universal PWA boilerplate for serverless environment.","repository":{"type":"git","url":"git+https://github.com/maciejtreder/angular-universal-serverless.git"},"scripts":{"build":"tsc -p tsconfig.json","test":"npm run build && jasmine **/*_spec.js"},"keywords":["schematics"],"license":"MIT","schematics":"./src/collection.json","dependencies":{"@angular-devkit/core":"^0.4.7","@angular-devkit/schematics":"^0.4.7","@types/jasmine":"^2.6.0","@types/node":"^8.0.31","jasmine":"^2.8.0","typescript":"^2.5.2"},"devDependencies":{"@schematics/angular":"^0.4.8"},"bugs":{"url":"https://github.com/maciejtreder/angular-universal-serverless/issues"},"homepage":"https://github.com/maciejtreder/angular-universal-serverless#readme","_id":"angular-universal-pwa@1.0.0","_npmVersion":"5.3.0","_nodeVersion":"8.5.0","_npmUser":{"name":"maciejtreder","email":"contact@maciejtreder.com"},"dist":{"integrity":"sha512-ra52dPUITytLmVKqbvt7kHoHkQqcd0r7IxHX9fSz3frbYvDDt37kNZb3DRRa9xQIViF7WjJzYuqC43jYBsFm2g==","shasum":"f93345aeef88a6d4ab1d2ed771dbe6eb4b904561","tarball":"https://registry.npmjs.org/angular-universal-pwa/-/angular-universal-pwa-1.0.0.tgz","fileCount":65,"unpackedSize":827262,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIF0t034pMkGtSwqKL/5+qEzhR3Gkbskv6CDa8kUETv9NAiEAgta+XZJ9jBWFWBWi6QI8Srr5bIpOPrTMMJtcZ4V/dIc="}]},"maintainers":[{"name":"maciejtreder","email":"contact@maciejtreder.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/angular-universal-pwa_1.0.0_1522597644824_0.5969747953356783"},"_hasShrinkwrap":false},"1.0.1":{"author":"","name":"angular-universal-pwa","version":"1.0.1","description":"Angular Universal PWA boilerplate for serverless environment.","repository":{"type":"git","url":"git+https://github.com/maciejtreder/angular-universal-serverless.git"},"scripts":{"build":"tsc -p tsconfig.json","test":"npm run build && jasmine **/*_spec.js"},"keywords":["schematics"],"license":"MIT","schematics":"./src/collection.json","dependencies":{"@angular-devkit/core":"^0.4.7","@angular-devkit/schematics":"^0.4.7","@types/jasmine":"^2.6.0","@types/node":"^8.0.31","jasmine":"^2.8.0","typescript":"^2.5.2","@schematics/angular":"^0.4.8"},"bugs":{"url":"https://github.com/maciejtreder/angular-universal-serverless/issues"},"homepage":"https://github.com/maciejtreder/angular-universal-serverless#readme","_id":"angular-universal-pwa@1.0.1","_npmVersion":"5.3.0","_nodeVersion":"8.5.0","_npmUser":{"name":"maciejtreder","email":"contact@maciejtreder.com"},"dist":{"integrity":"sha512-oQo2GlBMSuuwixsaNoHat8WrPzIuTgS6TXtxCUU4tiuO6GM2NCRareem26viUURLyg1N81qqaucpRXtz/MJvPA==","shasum":"dd071fcd2e838eb7d682b0447dcd44fdfa90e199","tarball":"https://registry.npmjs.org/angular-universal-pwa/-/angular-universal-pwa-1.0.1.tgz","fileCount":65,"unpackedSize":827235,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCrYBX7rAVLICRpo5BpwUg8VuhXRIn8gDx9e5FQFhLBxwIgWBAbArcp3OaHfHmkcsBNeVpbcQcunNnVYiE3igRIpfY="}]},"maintainers":[{"name":"maciejtreder","email":"contact@maciejtreder.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/angular-universal-pwa_1.0.1_1522597810906_0.9998713290603698"},"_hasShrinkwrap":false},"1.0.2":{"author":"","name":"angular-universal-pwa","version":"1.0.2","description":"Angular Universal PWA boilerplate for serverless environment.","repository":{"type":"git","url":"git+https://github.com/maciejtreder/angular-universal-serverless.git"},"scripts":{"build":"tsc -p tsconfig.json","test":"npm run build && jasmine **/*_spec.js","postinstall":"node postinstall.js"},"keywords":["schematics"],"license":"MIT","schematics":"./src/collection.json","dependencies":{"@angular-devkit/core":"^0.4.7","@angular-devkit/schematics":"^0.4.7","@types/jasmine":"^2.6.0","@types/node":"^8.0.31","jasmine":"^2.8.0","typescript":"^2.5.2","@schematics/angular":"^0.4.8"},"bugs":{"url":"https://github.com/maciejtreder/angular-universal-serverless/issues"},"homepage":"https://github.com/maciejtreder/angular-universal-serverless#readme","_id":"angular-universal-pwa@1.0.2","_npmVersion":"5.3.0","_nodeVersion":"8.5.0","_npmUser":{"name":"maciejtreder","email":"contact@maciejtreder.com"},"dist":{"integrity":"sha512-bF5xOwnJY5XWNKbBwr/za7k+JMXxZ+hTEg1iO50HCbYqvl+VSrKdhZLguQEhzw20xiNSE2VpXrKygdjX/iZTTQ==","shasum":"d9091d6037a01626e6ae26730e151f08b8d95704","tarball":"https://registry.npmjs.org/angular-universal-pwa/-/angular-universal-pwa-1.0.2.tgz","fileCount":66,"unpackedSize":827716,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIF2zF7ZDhqnPpAybFsRdxGuYzZRVu1I7cz1KT0RiERWlAiEA916cH/CbPgv3bKyOxaFrBfKZRrvs1vAogxV0ZM9y8jw="}]},"maintainers":[{"name":"maciejtreder","email":"contact@maciejtreder.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/angular-universal-pwa_1.0.2_1522597941673_0.5908252056844916"},"_hasShrinkwrap":false},"1.0.4":{"author":"","name":"angular-universal-pwa","version":"1.0.4","description":"Angular Universal PWA boilerplate for serverless environment.","repository":{"type":"git","url":"git+https://github.com/maciejtreder/angular-universal-serverless.git"},"scripts":{"build":"tsc -p tsconfig.json","test":"npm run build && jasmine **/*_spec.js","postinstall":"node postinstall.js"},"keywords":["schematics"],"license":"MIT","schematics":"./src/collection.json","dependencies":{"@angular-devkit/core":"^0.4.7","@angular-devkit/schematics":"^0.4.7","@types/jasmine":"^2.6.0","@types/node":"^8.0.31","jasmine":"^2.8.0","typescript":"^2.5.2","@schematics/angular":"^0.4.8"},"bugs":{"url":"https://github.com/maciejtreder/angular-universal-serverless/issues"},"homepage":"https://github.com/maciejtreder/angular-universal-serverless#readme","_id":"angular-universal-pwa@1.0.4","_npmVersion":"5.3.0","_nodeVersion":"8.5.0","_npmUser":{"name":"maciejtreder","email":"contact@maciejtreder.com"},"dist":{"integrity":"sha512-J4ezEKq4pP215kjp5gIAhBRZfD68T1jRwnbT/k+SsX3jAc2F8hBeNXaV5g+jM72/fQmm4IGGeE3NklSQZMMKuA==","shasum":"20667885d18232e37490b953731174f555f09764","tarball":"https://registry.npmjs.org/angular-universal-pwa/-/angular-universal-pwa-1.0.4.tgz","fileCount":74,"unpackedSize":867945,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIH95Ce1P1x0LMDTnv2Gfk3Ep4GSyb0xFyml+eQw4UpqNAiEAhSVEWM8RmtqS9669W3mEwG9D/v3koRTgM1xKX9WqGzk="}]},"maintainers":[{"name":"maciejtreder","email":"contact@maciejtreder.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/angular-universal-pwa_1.0.4_1522660545955_0.0015351293341618888"},"_hasShrinkwrap":false},"1.0.5":{"author":"","name":"angular-universal-pwa","version":"1.0.5","description":"Angular Universal PWA boilerplate for serverless environment.","repository":{"type":"git","url":"git+https://github.com/maciejtreder/angular-universal-serverless.git"},"scripts":{"build":"tsc -p tsconfig.json","test":"npm run build && jasmine **/*_spec.js","postinstall":"node postinstall.js"},"keywords":["schematics"],"license":"MIT","schematics":"./src/collection.json","dependencies":{"@angular-devkit/core":"^0.4.7","@angular-devkit/schematics":"^0.4.7","@types/jasmine":"^2.6.0","@types/node":"^8.0.31","jasmine":"^2.8.0","typescript":"^2.5.2","@schematics/angular":"^0.4.8"},"bugs":{"url":"https://github.com/maciejtreder/angular-universal-serverless/issues"},"homepage":"https://github.com/maciejtreder/angular-universal-serverless#readme","_id":"angular-universal-pwa@1.0.5","_npmVersion":"5.3.0","_nodeVersion":"8.5.0","_npmUser":{"name":"maciejtreder","email":"contact@maciejtreder.com"},"dist":{"integrity":"sha512-a2aAnNb/m0q4sKisYFk+cPi710IRV/ZNyNZrgBQTW8Vh3dPRVrjnyHT2oUEzuh9/10vqriFDhTluACUlBUL0Yw==","shasum":"cd4808c6885c71436b470ab7a5b5d4695b469c4a","tarball":"https://registry.npmjs.org/angular-universal-pwa/-/angular-universal-pwa-1.0.5.tgz","fileCount":74,"unpackedSize":867933,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIB4ZF/Xfsh3ydZnVng4d7FN4v52B0wYvYMM97oEYqwaEAiEAkSE8+pOsaCRetMmqDMF6wn3n0uwZvZ3BNDIQV+A8J9E="}]},"maintainers":[{"name":"maciejtreder","email":"contact@maciejtreder.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/angular-universal-pwa_1.0.5_1522661364578_0.3479693866112039"},"_hasShrinkwrap":false},"1.0.6":{"author":"","name":"angular-universal-pwa","version":"1.0.6","description":"Angular Universal PWA boilerplate for serverless environment.","repository":{"type":"git","url":"git+https://github.com/maciejtreder/angular-universal-serverless.git"},"scripts":{"build":"tsc -p tsconfig.json","test":"npm run build && jasmine **/*_spec.js","postinstall":"node postinstall.js"},"keywords":["schematics","angular","serverless","server side rendering","pwa","progressive web app","lambda","amazon web services","google cloud functions"],"license":"MIT","schematics":"./src/collection.json","dependencies":{"@angular-devkit/core":"^0.4.7","@angular-devkit/schematics":"^0.4.7","@types/jasmine":"^2.6.0","@types/node":"^8.0.31","jasmine":"^2.8.0","typescript":"^2.5.2","@schematics/angular":"^0.4.8"},"bugs":{"url":"https://github.com/maciejtreder/angular-universal-serverless/issues"},"homepage":"https://github.com/maciejtreder/angular-universal-serverless#readme","_id":"angular-universal-pwa@1.0.6","_npmVersion":"5.3.0","_nodeVersion":"8.5.0","_npmUser":{"name":"maciejtreder","email":"contact@maciejtreder.com"},"dist":{"integrity":"sha512-Gsh5F8mOsFEcq74TSz1C14VAyM+NFitJ5kf+CFGe2ONpXhhRF9c6eLurZt9vdUDEA9QaDLGLGSmFTySyhRg9qw==","shasum":"78717dec666e6d5ee85d190fc9fbda4e5d01f940","tarball":"https://registry.npmjs.org/angular-universal-pwa/-/angular-universal-pwa-1.0.6.tgz","fileCount":74,"unpackedSize":868249,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFxL/J7QsiZBpBu4tGdFy/+FRSfqtlRnvYAZ8QgQlsX5AiEAr1EF3CcxFlaNIAs8PClMWDjJl8d9lwrgOT334sQ6fls="}]},"maintainers":[{"name":"maciejtreder","email":"contact@maciejtreder.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/angular-universal-pwa_1.0.6_1522661933406_0.27091419846476805"},"_hasShrinkwrap":false},"1.0.7":{"author":"","name":"angular-universal-pwa","version":"1.0.7","description":"Angular Universal PWA boilerplate for serverless environment.","repository":{"type":"git","url":"git+https://github.com/maciejtreder/angular-universal-serverless.git"},"scripts":{"build":"tsc -p tsconfig.json","test":"npm run build && jasmine **/*_spec.js","postinstall":"node postinstall.js && opencollective postinstall"},"keywords":["schematics","angular","serverless","server side rendering","pwa","progressive web app","lambda","amazon web services","google cloud functions"],"license":"MIT","schematics":"./src/collection.json","dependencies":{"opencollective":"^1.0.3","@angular-devkit/core":"^0.4.7","@angular-devkit/schematics":"^0.4.7","@types/jasmine":"^2.6.0","@types/node":"^8.0.31","jasmine":"^2.8.0","typescript":"^2.5.2","@schematics/angular":"^0.4.8"},"bugs":{"url":"https://github.com/maciejtreder/angular-universal-serverless/issues"},"homepage":"https://github.com/maciejtreder/angular-universal-serverless#readme","_id":"angular-universal-pwa@1.0.7","_npmVersion":"5.3.0","_nodeVersion":"8.5.0","_npmUser":{"name":"maciejtreder","email":"contact@maciejtreder.com"},"dist":{"integrity":"sha512-2PA2h/4XgD3kHN0zyH3aIMNOnUvrqDhWJRQqGVC8Q3AOCdsi5VE/k+MrB2myOd9gu1jdG+EPu7g+koggTfm2eA==","shasum":"bec58657ef270a0bc17e5cb53ea508e50c4c4caf","tarball":"https://registry.npmjs.org/angular-universal-pwa/-/angular-universal-pwa-1.0.7.tgz","fileCount":74,"unpackedSize":868358,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCb5wuO0tyAeNy5fIDllLiscThMQC/rCVxgmFa6Kdk9vQIgXdDMWFY+wYn1haGsRtm9vs18RaeGXEXaXoAdeSZd6KA="}]},"maintainers":[{"name":"maciejtreder","email":"contact@maciejtreder.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/angular-universal-pwa_1.0.7_1522670527993_0.9399095366125803"},"_hasShrinkwrap":false},"1.0.8":{"author":"","name":"angular-universal-pwa","version":"1.0.8","description":"Angular Universal PWA boilerplate for serverless environment.","repository":{"type":"git","url":"git+https://github.com/maciejtreder/angular-universal-serverless.git"},"scripts":{"build":"tsc -p tsconfig.json","test":"npm run build && jasmine **/*_spec.js","postinstall":"node postinstall.js && opencollective postinstall"},"keywords":["schematics","angular","serverless","server side rendering","pwa","progressive web app","lambda","amazon web services","google cloud functions"],"license":"MIT","schematics":"./src/collection.json","dependencies":{"opencollective":"^1.0.3","@angular-devkit/core":"^0.4.7","@angular-devkit/schematics":"^0.4.7","@types/jasmine":"^2.6.0","@types/node":"^8.0.31","jasmine":"^2.8.0","typescript":"^2.5.2","@schematics/angular":"^0.4.8"},"bugs":{"url":"https://github.com/maciejtreder/angular-universal-serverless/issues"},"homepage":"https://github.com/maciejtreder/angular-universal-serverless#readme","_id":"angular-universal-pwa@1.0.8","_npmVersion":"5.3.0","_nodeVersion":"8.5.0","_npmUser":{"name":"maciejtreder","email":"contact@maciejtreder.com"},"dist":{"integrity":"sha512-aCU2evtlxHWxxbjiikoS2e4qZjJUHXm3bCsTxaOnHAx+ZZgzGRHEpd/q7k+UmVq0q3AWMuvBtFo42IiHiIgmpA==","shasum":"23d0eaf486cd6262e1ecde5a8723a814ccc6b11c","tarball":"https://registry.npmjs.org/angular-universal-pwa/-/angular-universal-pwa-1.0.8.tgz","fileCount":74,"unpackedSize":868344,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAw4BVzTv+equtT9LYvev2fAlBkMrGEIXK4PrAAWFjsaAiEAu1ee9YWhrAmOJ6HbWUdt3fgOfRkColbEOatysT0fLwU="}]},"maintainers":[{"name":"maciejtreder","email":"contact@maciejtreder.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/angular-universal-pwa_1.0.8_1522671137342_0.24214462412110804"},"_hasShrinkwrap":false},"1.0.9":{"author":{"name":"Maciej Treder","email":"contact@maciejtreder.com"},"name":"angular-universal-pwa","version":"1.0.9","description":"Angular Universal PWA boilerplate for serverless environment.","repository":{"type":"git","url":"git+https://github.com/maciejtreder/angular-universal-serverless.git"},"scripts":{"build":"tsc -p tsconfig.json","test":"npm run build && jasmine **/*_spec.js","postinstall":"node postinstall.js && opencollective postinstall"},"keywords":["schematics","angular","serverless","server side rendering","pwa","progressive web app","lambda","amazon web services","google cloud functions"],"license":"MIT","schematics":"./src/collection.json","dependencies":{"opencollective":"^1.0.3","@angular-devkit/schematics":"^0.4.7","@schematics/angular":"^0.4.8"},"devDependencies":{"jasmine":"^2.8.0","typescript":"^2.5.2","@types/jasmine":"^2.6.0","@types/node":"^8.0.31","@angular-devkit/core":"^0.4.7"},"bugs":{"url":"https://github.com/maciejtreder/angular-universal-serverless/issues"},"homepage":"https://github.com/maciejtreder/angular-universal-serverless#readme","_id":"angular-universal-pwa@1.0.9","_npmVersion":"5.3.0","_nodeVersion":"8.5.0","_npmUser":{"name":"maciejtreder","email":"contact@maciejtreder.com"},"dist":{"integrity":"sha512-CZ61iIrWqEsMIeO0Q9av6y68e07+MY1cbkCx3zjQcyJ1cA1lPlbuQQRTisSIxk0Un0szxFku7kRvr75RUFbtlA==","shasum":"258fbce7117894174c719a6fe74999aa0177db32","tarball":"https://registry.npmjs.org/angular-universal-pwa/-/angular-universal-pwa-1.0.9.tgz","fileCount":74,"unpackedSize":868411,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGWSqidjmsby9JTtKk2bbBuSS3QiQSzB+ngEoxzVQaLNAiBnMaVmU7JD7r+LraIxVQsabDVl95FOhFn5AH5PuIRU1g=="}]},"maintainers":[{"name":"maciejtreder","email":"contact@maciejtreder.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/angular-universal-pwa_1.0.9_1522738283655_0.579284366402139"},"_hasShrinkwrap":false},"1.0.10":{"author":{"name":"Maciej Treder","email":"contact@maciejtreder.com"},"name":"angular-universal-pwa","version":"1.0.10","description":"Angular Universal PWA boilerplate for serverless environment.","repository":{"type":"git","url":"git+https://github.com/maciejtreder/angular-universal-serverless.git"},"scripts":{"build":"tsc -p tsconfig.json","test":"npm run build && jasmine **/*_spec.js","postinstall":"node postinstall.js && opencollective postinstall"},"keywords":["schematics","angular","serverless","server side rendering","pwa","progressive web app","lambda","amazon web services","google cloud functions"],"license":"MIT","schematics":"./src/collection.json","dependencies":{"opencollective":"^1.0.3","@angular-devkit/schematics":"^0.4.7","@schematics/angular":"^0.4.8"},"devDependencies":{"jasmine":"^2.8.0","typescript":"^2.5.2","@types/jasmine":"^2.6.0","@types/node":"^8.0.31","@angular-devkit/core":"^0.4.7"},"bugs":{"url":"https://github.com/maciejtreder/angular-universal-serverless/issues"},"homepage":"https://github.com/maciejtreder/angular-universal-serverless#readme","_id":"angular-universal-pwa@1.0.10","_npmVersion":"5.3.0","_nodeVersion":"8.5.0","_npmUser":{"name":"maciejtreder","email":"contact@maciejtreder.com"},"dist":{"integrity":"sha512-seUGoKepd22SO9eudn8TPZuBDkoxrwO97TPRHGFeFvV8SsUtSQFw9Y18yA4mGbKFKtJPa+zE71h0LFJXFfVEmw==","shasum":"75c244ba2d6efd63c000a424ee720723cf42934e","tarball":"https://registry.npmjs.org/angular-universal-pwa/-/angular-universal-pwa-1.0.10.tgz","fileCount":118,"unpackedSize":926701,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDyU/HA/3XXrSDAme+apU0zZsSBQ+j18PMW4arTfuNooQIgfkOHNzt5vXSkTFupWT3nBpJPMqeEvP9ptOiOE2yy5Fg="}]},"maintainers":[{"name":"maciejtreder","email":"contact@maciejtreder.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/angular-universal-pwa_1.0.10_1522739019827_0.12012854966966735"},"_hasShrinkwrap":false},"1.0.12":{"author":{"name":"Maciej Treder","email":"contact@maciejtreder.com"},"name":"angular-universal-pwa","version":"1.0.12","description":"Angular Universal PWA boilerplate for serverless environment.","repository":{"type":"git","url":"git+https://github.com/maciejtreder/angular-universal-serverless.git"},"scripts":{"build":"tsc -p tsconfig.json","test":"npm run build && jasmine **/*_spec.js","postinstall":"node postinstall.js && opencollective postinstall"},"keywords":["schematics","angular","serverless","server side rendering","pwa","progressive web app","lambda","amazon web services","google cloud functions"],"license":"MIT","schematics":"./src/collection.json","dependencies":{"opencollective":"^1.0.3","@angular-devkit/schematics":"^0.4.7","@schematics/angular":"^0.4.8","@angular-devkit/core":"^0.4.7"},"devDependencies":{"jasmine":"^2.8.0","typescript":"^2.5.2","@types/jasmine":"^2.6.0","@types/node":"^8.0.31"},"bugs":{"url":"https://github.com/maciejtreder/angular-universal-serverless/issues"},"homepage":"https://github.com/maciejtreder/angular-universal-serverless#readme","_id":"angular-universal-pwa@1.0.12","_npmVersion":"5.3.0","_nodeVersion":"8.5.0","_npmUser":{"name":"maciejtreder","email":"contact@maciejtreder.com"},"dist":{"integrity":"sha512-WZF46keeU2dYZOg6F6MM/nPISxR8xI0WOHniZ2a4M+xd4QCWAbC+MeS07hVvCIMnFyi7JkDffSMs+TZHM5u78Q==","shasum":"ee572ccef04ec1d70a6f4f4c7ba77b0a6484de0c","tarball":"https://registry.npmjs.org/angular-universal-pwa/-/angular-universal-pwa-1.0.12.tgz","fileCount":118,"unpackedSize":926593,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCd+ijCl2sANe+Z5QEc0gob1sD1IRAINLlg3YyX4TY6jAIgTniMsePt6sPo+llLULUdD2KuhSDv0jnCoMDFAGJQJR8="}]},"maintainers":[{"name":"maciejtreder","email":"contact@maciejtreder.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/angular-universal-pwa_1.0.12_1522739522499_0.44347382774887256"},"_hasShrinkwrap":false},"1.0.13":{"author":{"name":"Maciej Treder","email":"contact@maciejtreder.com"},"name":"angular-universal-pwa","version":"1.0.13","description":"Angular Universal PWA boilerplate for serverless environment.","repository":{"type":"git","url":"git+https://github.com/maciejtreder/angular-universal-serverless.git"},"scripts":{"build":"tsc -p tsconfig.json","test":"npm run build && jasmine **/*_spec.js","postinstall":"node postinstall.js && opencollective postinstall"},"keywords":["schematics","angular","serverless","server side rendering","pwa","progressive web app","lambda","amazon web services","google cloud functions"],"license":"MIT","schematics":"./src/collection.json","dependencies":{"opencollective":"^1.0.3","@angular-devkit/schematics":"^0.4.7","@schematics/angular":"^0.4.8","@angular-devkit/core":"^0.4.7"},"devDependencies":{"jasmine":"^2.8.0","typescript":"^2.5.2","@types/jasmine":"^2.6.0","@types/node":"^8.0.31"},"bugs":{"url":"https://github.com/maciejtreder/angular-universal-serverless/issues"},"homepage":"https://github.com/maciejtreder/angular-universal-serverless#readme","_id":"angular-universal-pwa@1.0.13","_npmVersion":"5.3.0","_nodeVersion":"8.5.0","_npmUser":{"name":"maciejtreder","email":"contact@maciejtreder.com"},"dist":{"integrity":"sha512-P4O//U7OJ5znfL0CKCy4QjNPJzZbBtcT32ZHJPf9xoKXdpMLXj4/sTubCGY91UqGyPp+4HbhNyHDMUQfpneguQ==","shasum":"a5e49d9506332099f4c1e0fbfa9e4aa0a7c9fa00","tarball":"https://registry.npmjs.org/angular-universal-pwa/-/angular-universal-pwa-1.0.13.tgz","fileCount":118,"unpackedSize":926573,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHoCIbEQAOaaf8G1kT1Mo4nnni3MeN8O68izTuqzZgaoAiAwt9MdJ0XHHAGnwuYXuWq1imE3X64ZLTKPNEBMq429Qw=="}]},"maintainers":[{"name":"maciejtreder","email":"contact@maciejtreder.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/angular-universal-pwa_1.0.13_1522740263236_0.10942843565370852"},"_hasShrinkwrap":false},"1.0.14":{"author":{"name":"Maciej Treder","email":"contact@maciejtreder.com"},"name":"angular-universal-pwa","version":"1.0.14","description":"Angular Universal PWA boilerplate for serverless environment.","repository":{"type":"git","url":"git+https://github.com/maciejtreder/angular-universal-serverless.git"},"scripts":{"build":"tsc -p tsconfig.json","test":"npm run build && jasmine **/*_spec.js","postinstall":"node postinstall.js && opencollective postinstall"},"keywords":["schematics","angular","serverless","server side rendering","pwa","progressive web app","lambda","amazon web services","google cloud functions"],"license":"MIT","schematics":"./src/collection.json","dependencies":{"opencollective":"^1.0.3","@angular-devkit/schematics":"^0.4.7","@schematics/angular":"^0.4.8","@angular-devkit/core":"^0.4.7"},"devDependencies":{"jasmine":"^2.8.0","typescript":"^2.5.2","@types/jasmine":"^2.6.0","@types/node":"^8.0.31"},"bugs":{"url":"https://github.com/maciejtreder/angular-universal-serverless/issues"},"homepage":"https://github.com/maciejtreder/angular-universal-serverless#readme","_id":"angular-universal-pwa@1.0.14","_npmVersion":"5.3.0","_nodeVersion":"8.5.0","_npmUser":{"name":"maciejtreder","email":"contact@maciejtreder.com"},"dist":{"integrity":"sha512-ZRvllQlkWOPvTXqFaiFFRa8b3Q52Ch27LfyM6H+l7nSKQU1bRDdoPSp5nnYkAxIjLQGn6nki1S+gFoep20Y/eQ==","shasum":"227dea0a90fc600674fdcdae355fe26e0e4c5400","tarball":"https://registry.npmjs.org/angular-universal-pwa/-/angular-universal-pwa-1.0.14.tgz","fileCount":118,"unpackedSize":926561,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDgZhsDaTmMbEGJJvjS8IbOZuSaE2Pz5am32AZxqkchGAIhAK8xoDxNuhE8dJqpYduLWE5eWfhQWKmBSOzLpi9cQAFf"}]},"maintainers":[{"name":"maciejtreder","email":"contact@maciejtreder.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/angular-universal-pwa_1.0.14_1522740412240_0.1808147678889631"},"_hasShrinkwrap":false},"1.0.15":{"author":{"name":"Maciej Treder","email":"contact@maciejtreder.com"},"name":"angular-universal-pwa","version":"1.0.15","description":"Angular Universal PWA boilerplate for serverless environment.","repository":{"type":"git","url":"git+https://github.com/maciejtreder/angular-universal-serverless.git"},"scripts":{"build":"tsc -p tsconfig.json","test":"npm run build && jasmine **/*_spec.js","postinstall":"node postinstall.js && opencollective postinstall"},"keywords":["schematics","angular","serverless","server side rendering","pwa","progressive web app","lambda","amazon web services","google cloud functions"],"license":"MIT","schematics":"./src/collection.json","dependencies":{"opencollective":"^1.0.3","@angular-devkit/schematics":"^0.4.7","@schematics/angular":"^0.4.8","@angular-devkit/core":"^0.4.7"},"devDependencies":{"jasmine":"^2.8.0","typescript":"^2.5.2","@types/jasmine":"^2.6.0","@types/node":"^8.0.31"},"bugs":{"url":"https://github.com/maciejtreder/angular-universal-serverless/issues"},"homepage":"https://github.com/maciejtreder/angular-universal-serverless#readme","_id":"angular-universal-pwa@1.0.15","_npmVersion":"5.3.0","_nodeVersion":"8.5.0","_npmUser":{"name":"maciejtreder","email":"contact@maciejtreder.com"},"dist":{"integrity":"sha512-8GtJXl9mhP4H8Alw1doZtt+HpXzP8x5/xiXx8eunJFpjUAOIqj3IxikFAUUaK4AQDDm7enLo4tRblF869p6yJg==","shasum":"2a6a1c665f0abdd5a0830c3d615a66d3467bb67b","tarball":"https://registry.npmjs.org/angular-universal-pwa/-/angular-universal-pwa-1.0.15.tgz","fileCount":118,"unpackedSize":927124,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCT3CQYatb4hmZyDWwUQNN/YlK5My3NcdCDiehf9RPWnQIhAPln0VTIvJsl+lLwx9srB4vBxkQS76qtg1GHq2XOfbRc"}]},"maintainers":[{"name":"maciejtreder","email":"contact@maciejtreder.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/angular-universal-pwa_1.0.15_1522740791023_0.006919469731436978"},"_hasShrinkwrap":false},"1.0.16":{"author":{"name":"Maciej Treder","email":"contact@maciejtreder.com"},"name":"angular-universal-pwa","version":"1.0.16","description":"Angular Universal PWA boilerplate for serverless environment.","repository":{"type":"git","url":"git+https://github.com/maciejtreder/angular-universal-serverless.git"},"scripts":{"build":"tsc -p tsconfig.json","test":"npm run build && jasmine **/*_spec.js","postinstall":"node postinstall.js && opencollective postinstall"},"keywords":["schematics","angular","serverless","server side rendering","pwa","progressive web app","lambda","amazon web services","google cloud functions"],"license":"MIT","schematics":"./src/collection.json","dependencies":{"opencollective":"^1.0.3","@angular-devkit/schematics":"^0.4.7","@schematics/angular":"^0.4.8","@angular-devkit/core":"^0.4.7"},"devDependencies":{"jasmine":"^2.8.0","typescript":"^2.5.2","@types/jasmine":"^2.6.0","@types/node":"^8.0.31"},"bugs":{"url":"https://github.com/maciejtreder/angular-universal-serverless/issues"},"homepage":"https://github.com/maciejtreder/angular-universal-serverless#readme","_id":"angular-universal-pwa@1.0.16","_npmVersion":"5.6.0","_nodeVersion":"9.10.1","_npmUser":{"name":"maciejtreder","email":"contact@maciejtreder.com"},"dist":{"integrity":"sha512-pFH5vle/5t6NtAI6H0BOfYeNPHdRGinOe+Y1YT/RklCvLxbUFPBx0+cCYBqmcpz7AjMoLhN1YEKn0+HhzU5MDg==","shasum":"b26f3f5bfcb287e52baedb6f697e5b80879e8e5a","tarball":"https://registry.npmjs.org/angular-universal-pwa/-/angular-universal-pwa-1.0.16.tgz","fileCount":115,"unpackedSize":484345,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCMovVQNwrM7vIop0MuffdnKLjOMwFVFIWN6IjrqlTeOQIgLeWq9qSlxe0yza1UY9CpaSWp1LW7QoX6FXiw34rXoew="}]},"maintainers":[{"name":"maciejtreder","email":"contact@maciejtreder.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/angular-universal-pwa_1.0.16_1522858047114_0.7288403254210656"},"_hasShrinkwrap":false},"1.0.17":{"author":{"name":"Maciej Treder","email":"contact@maciejtreder.com"},"name":"angular-universal-pwa","version":"1.0.17","description":"Angular Universal PWA boilerplate for serverless environment.","repository":{"type":"git","url":"git+https://github.com/maciejtreder/angular-universal-serverless.git"},"scripts":{"build":"tsc -p tsconfig.json","test":"npm run build && jasmine **/*_spec.js","postinstall":"node postinstall.js && opencollective postinstall"},"keywords":["schematics","angular","serverless","server side rendering","pwa","progressive web app","lambda","amazon web services","google cloud functions"],"license":"MIT","schematics":"./src/collection.json","dependencies":{"opencollective":"^1.0.3","@angular-devkit/schematics":"^0.4.7","@schematics/angular":"^0.4.8","@angular-devkit/core":"^0.4.7"},"devDependencies":{"jasmine":"^2.8.0","typescript":"^2.5.2","@types/jasmine":"^2.6.0","@types/node":"^8.0.31"},"bugs":{"url":"https://github.com/maciejtreder/angular-universal-serverless/issues"},"homepage":"https://github.com/maciejtreder/angular-universal-serverless#readme","_id":"angular-universal-pwa@1.0.17","_npmVersion":"5.3.0","_nodeVersion":"8.5.0","_npmUser":{"name":"maciejtreder","email":"contact@maciejtreder.com"},"dist":{"integrity":"sha512-QgGCGak/tKS9iQ4c66+cwr/OCLSXjodQ3JvdJ2HhqYL79+ya++yHIzGLw6a9wZkoppG8EroGMJsuVjECZ+VdcQ==","shasum":"e7e8bd6b40a3bf2d527eaa243e8ee05196596b8d","tarball":"https://registry.npmjs.org/angular-universal-pwa/-/angular-universal-pwa-1.0.17.tgz","fileCount":118,"unpackedSize":485460,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIET2kHLy94J93sAdk7vvDbuSBDGAAJwAKobNoJD81ObrAiEA/N0KNHOL8eB9VAkEa4GC3rUxmZx5UHl8S8ohRm6UMk4="}]},"maintainers":[{"name":"maciejtreder","email":"contact@maciejtreder.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/angular-universal-pwa_1.0.17_1522858243176_0.34427422650568085"},"_hasShrinkwrap":false},"1.0.18":{"author":{"name":"Maciej Treder","email":"contact@maciejtreder.com"},"name":"angular-universal-pwa","version":"1.0.18","description":"Angular Universal PWA boilerplate for serverless environment.","repository":{"type":"git","url":"git+https://github.com/maciejtreder/angular-universal-serverless.git"},"scripts":{"build":"tsc -p tsconfig.json","test":"npm run build && jasmine **/*_spec.js","postinstall":"node postinstall.js && opencollective postinstall"},"keywords":["schematics","angular","serverless","server side rendering","pwa","progressive web app","lambda","amazon web services","google cloud functions"],"license":"MIT","schematics":"./src/collection.json","dependencies":{"opencollective":"^1.0.3","@angular-devkit/schematics":"^0.4.7","@schematics/angular":"^0.4.8","@angular-devkit/core":"^0.4.7"},"devDependencies":{"jasmine":"^2.8.0","typescript":"^2.5.2","@types/jasmine":"^2.6.0","@types/node":"^8.0.31"},"bugs":{"url":"https://github.com/maciejtreder/angular-universal-serverless/issues"},"homepage":"https://github.com/maciejtreder/angular-universal-serverless#readme","_id":"angular-universal-pwa@1.0.18","_npmVersion":"5.6.0","_nodeVersion":"9.10.1","_npmUser":{"name":"maciejtreder","email":"contact@maciejtreder.com"},"dist":{"integrity":"sha512-oWIORIIEv2OmEWgtm7UH2x+0DHeBPCtd5uLlm6JChEuxOkIee8guqA6kethj0ZXxXUvPfJvK4OvASqzKyK3Qkg==","shasum":"4c4e4e7432a4f7961ea3d9c2521dfeddf243bec9","tarball":"https://registry.npmjs.org/angular-universal-pwa/-/angular-universal-pwa-1.0.18.tgz","fileCount":115,"unpackedSize":484345,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAh0n4Xd4h+VsgB+CWPGWK9a+xnFFhR0cD9wdcC51I5rAiBjWNMGHHlNpkRspxk+i+2+ydYgB2SdCqQdX39i15bENg=="}]},"maintainers":[{"name":"maciejtreder","email":"contact@maciejtreder.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/angular-universal-pwa_1.0.18_1522859212041_0.4378819267998766"},"_hasShrinkwrap":false},"1.0.19":{"author":{"name":"Maciej Treder","email":"contact@maciejtreder.com"},"name":"angular-universal-pwa","version":"1.0.19","description":"Angular Universal PWA boilerplate for serverless environment.","repository":{"type":"git","url":"git+https://github.com/maciejtreder/angular-universal-serverless.git"},"scripts":{"build":"tsc -p tsconfig.json","test":"npm run build && jasmine **/*_spec.js","postinstall":"node postinstall.js && opencollective postinstall"},"keywords":["schematics","angular","serverless","server side rendering","pwa","progressive web app","lambda","amazon web services","google cloud functions"],"license":"MIT","schematics":"./src/collection.json","dependencies":{"opencollective":"^1.0.3","@angular-devkit/schematics":"^0.4.7","@schematics/angular":"^0.4.8","@angular-devkit/core":"^0.4.7"},"devDependencies":{"jasmine":"^2.8.0","typescript":"^2.5.2","@types/jasmine":"^2.6.0","@types/node":"^8.0.31"},"bugs":{"url":"https://github.com/maciejtreder/angular-universal-serverless/issues"},"homepage":"https://github.com/maciejtreder/angular-universal-serverless#readme","_id":"angular-universal-pwa@1.0.19","_npmVersion":"5.3.0","_nodeVersion":"8.5.0","_npmUser":{"name":"maciejtreder","email":"contact@maciejtreder.com"},"dist":{"integrity":"sha512-/u75UpAWX32ZlU/xqy2VreS8s23WDUMkaL1l8lVisHXvfG4Vn/vCwMJgLt9HJxGzgIzgWZTJAoK+WDZaDmI2DA==","shasum":"42e269b6dde703ca7f6702911ad18d47c165976e","tarball":"https://registry.npmjs.org/angular-universal-pwa/-/angular-universal-pwa-1.0.19.tgz","fileCount":118,"unpackedSize":485460,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGouz52SYTu+9Ia9Av5CB0Vhj6/wCTZ2WQXbgKm66BELAiBvsQDkhI7C3LYWEDEtBbGGe/oiJnt+AY1gu62BuhIGJw=="}]},"maintainers":[{"name":"maciejtreder","email":"contact@maciejtreder.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/angular-universal-pwa_1.0.19_1522859845730_0.3307887069297768"},"_hasShrinkwrap":false},"1.0.20":{"author":{"name":"Maciej Treder","email":"contact@maciejtreder.com"},"name":"angular-universal-pwa","version":"1.0.20","description":"Angular Universal PWA boilerplate for serverless environment.","repository":{"type":"git","url":"git+https://github.com/maciejtreder/angular-universal-serverless.git"},"scripts":{"build":"tsc -p tsconfig.json","test":"npm run build && jasmine **/*_spec.js","postinstall":"node postinstall.js && opencollective postinstall"},"keywords":["schematics","angular","serverless","server side rendering","pwa","progressive web app","lambda","amazon web services","google cloud functions"],"license":"MIT","schematics":"./src/collection.json","dependencies":{"opencollective":"^1.0.3","@angular-devkit/schematics":"^0.4.7","@schematics/angular":"^0.4.8","@angular-devkit/core":"^0.4.7"},"devDependencies":{"jasmine":"^2.8.0","typescript":"^2.5.2","@types/jasmine":"^2.6.0","@types/node":"^8.0.31"},"bugs":{"url":"https://github.com/maciejtreder/angular-universal-serverless/issues"},"homepage":"https://github.com/maciejtreder/angular-universal-serverless#readme","_id":"angular-universal-pwa@1.0.20","_npmVersion":"5.3.0","_nodeVersion":"8.5.0","_npmUser":{"name":"maciejtreder","email":"contact@maciejtreder.com"},"dist":{"integrity":"sha512-18DLX6Xx3diB1Ive+46FV8ktE5IIZwh89mPXunhgcrCQPfiQjFG3sXjZUn5dIGojCMn46o7RGA0ojN/4O6JkNA==","shasum":"78f2e94142a60cfeaf12b9fab78b036aeb04d67d","tarball":"https://registry.npmjs.org/angular-universal-pwa/-/angular-universal-pwa-1.0.20.tgz","fileCount":118,"unpackedSize":485485,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDak4IhROXhq+DycpnAL05Ck8zmu2I87JoLaxz6PtK8iwIgKfBOewpgbIFncqlXn+gmuZI/DHMuM9VZXJahDUy9jKs="}]},"maintainers":[{"name":"maciejtreder","email":"contact@maciejtreder.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/angular-universal-pwa_1.0.20_1522860562635_0.615044839022814"},"_hasShrinkwrap":false},"1.0.22":{"author":{"name":"Maciej Treder","email":"contact@maciejtreder.com"},"name":"angular-universal-pwa","version":"1.0.22","description":"Angular Universal PWA boilerplate for serverless environment.","repository":{"type":"git","url":"git+https://github.com/maciejtreder/angular-universal-serverless.git"},"scripts":{"build":"tsc -p tsconfig.json","test":"npm run build && jasmine **/*_spec.js","postinstall":"node postinstall.js && opencollective postinstall"},"keywords":["schematics","angular","serverless","server side rendering","pwa","progressive web app","lambda","amazon web services","google cloud functions"],"license":"MIT","schematics":"./src/collection.json","dependencies":{"opencollective":"^1.0.3","@angular-devkit/schematics":"^0.4.7","@schematics/angular":"^0.4.8","@angular-devkit/core":"^0.4.7"},"devDependencies":{"jasmine":"^2.8.0","typescript":"^2.5.2","@types/jasmine":"^2.6.0","@types/node":"^8.0.31"},"bugs":{"url":"https://github.com/maciejtreder/angular-universal-serverless/issues"},"homepage":"https://github.com/maciejtreder/angular-universal-serverless#readme","_id":"angular-universal-pwa@1.0.22","_npmVersion":"5.6.0","_nodeVersion":"9.10.1","_npmUser":{"name":"maciejtreder","email":"contact@maciejtreder.com"},"dist":{"integrity":"sha512-u3MZF2Tk5eJBw8CaM5nLSD0cc9lvjvO51ei34wJHvbXfSC7BjsVPwFFOR13TbPDeAs1cDThQycwvACvAfrUGcA==","shasum":"e44126bc99410e9a6878e2230c7dbc9ce170e786","tarball":"https://registry.npmjs.org/angular-universal-pwa/-/angular-universal-pwa-1.0.22.tgz","fileCount":115,"unpackedSize":484345,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDsTkk7LFqFBAfwGzaNVZVVXY0lHlELOFq/tzKz+rimUAiEAo4aFZpOLbO0abRzIePYBlK/VNfHAw6+hKRffpQBdSw0="}]},"maintainers":[{"name":"maciejtreder","email":"contact@maciejtreder.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/angular-universal-pwa_1.0.22_1522861978450_0.5899155273086827"},"_hasShrinkwrap":false},"1.0.23":{"author":{"name":"Maciej Treder","email":"contact@maciejtreder.com"},"name":"angular-universal-pwa","version":"1.0.23","description":"Angular Universal PWA boilerplate for serverless environment.","repository":{"type":"git","url":"git+https://github.com/maciejtreder/angular-universal-serverless.git"},"scripts":{"build":"tsc -p tsconfig.json","test":"npm run build && jasmine **/*_spec.js","postinstall":"node postinstall.js && opencollective postinstall","prepublish":"npm run build"},"keywords":["schematics","angular","serverless","server side rendering","pwa","progressive web app","lambda","amazon web services","google cloud functions"],"license":"MIT","schematics":"./src/collection.json","dependencies":{"opencollective":"^1.0.3","@angular-devkit/schematics":"^0.4.7","@schematics/angular":"^0.4.8","@angular-devkit/core":"^0.4.7"},"devDependencies":{"jasmine":"^2.8.0","typescript":"^2.5.2","@types/jasmine":"^2.6.0","@types/node":"^8.0.31"},"bugs":{"url":"https://github.com/maciejtreder/angular-universal-serverless/issues"},"homepage":"https://github.com/maciejtreder/angular-universal-serverless#readme","_id":"angular-universal-pwa@1.0.23","_npmVersion":"5.3.0","_nodeVersion":"8.5.0","_npmUser":{"name":"maciejtreder","email":"contact@maciejtreder.com"},"dist":{"integrity":"sha512-7wsudw4u0DQ2TmNz7e1zP61EW5VJlpr1S2RYzXFzXt6OOfxZbf/fMTgbZhQZTy2LDTGZNFOvSDJK8HehLeqtgw==","shasum":"b6b8ae98ed7ab235636568cf23514a8bab73db9d","tarball":"https://registry.npmjs.org/angular-universal-pwa/-/angular-universal-pwa-1.0.23.tgz","fileCount":118,"unpackedSize":485495,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAEpOhELNNMvrAA1GZFfqR4IeE/eJHIdajlAATKifJKZAiBODcm0VQwxd1R4VW2+VVG9gptzTONDgmpWQRWQrIdp1Q=="}]},"maintainers":[{"name":"maciejtreder","email":"contact@maciejtreder.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/angular-universal-pwa_1.0.23_1522866373719_0.1079049110303576"},"_hasShrinkwrap":false},"1.1.0":{"author":{"name":"Maciej Treder","email":"contact@maciejtreder.com"},"name":"angular-universal-pwa","version":"1.1.0","description":"Angular Universal PWA boilerplate for serverless environment.","repository":{"type":"git","url":"git+https://github.com/maciejtreder/angular-universal-serverless.git"},"scripts":{"build":"tsc -p tsconfig.json","test":"npm run build && jasmine **/*_spec.js","postinstall":"node postinstall.js && opencollective postinstall","prepublish":"npm run build"},"keywords":["schematics","angular","serverless","server side rendering","pwa","progressive web app","lambda","amazon web services","google cloud functions"],"license":"MIT","schematics":"./src/collection.json","dependencies":{"@angular-devkit/core":"^0.4.7","@angular-devkit/schematics":"^0.4.7","@schematics/angular":"^0.4.8","ajv":"^6.4.0","opencollective":"^1.0.3"},"devDependencies":{"jasmine":"^2.8.0","typescript":"~2.7.2","@types/jasmine":"^2.6.0","@types/node":"^8.0.31"},"bugs":{"url":"https://github.com/maciejtreder/angular-universal-serverless/issues"},"homepage":"https://github.com/maciejtreder/angular-universal-serverless#readme","_id":"angular-universal-pwa@1.1.0","_npmVersion":"5.3.0","_nodeVersion":"8.5.0","_npmUser":{"name":"maciejtreder","email":"contact@maciejtreder.com"},"dist":{"integrity":"sha512-zMXYKBXXjyZeb2id3mm06ygjq0r6GiFYwAsmgTCLTk4xB7zSSw74INxUc82BK1hnASaM9dJzOKBiYzd3YNEozA==","shasum":"7546dbf91c54e3d531e6e9f3c54100f382fb38fb","tarball":"https://registry.npmjs.org/angular-universal-pwa/-/angular-universal-pwa-1.1.0.tgz","fileCount":121,"unpackedSize":491091,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDmwg1MQJRIRnJS5zbFFBDtWh+VKN1OXPmSP662RABwhAiA6c6yaJiy/M14INq15Rt6KoIaOkczxK8GbiEUoR1cTgQ=="}]},"maintainers":[{"name":"maciejtreder","email":"contact@maciejtreder.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/angular-universal-pwa_1.1.0_1522947648836_0.9180644217222622"},"_hasShrinkwrap":false},"1.1.2":{"author":{"name":"Maciej Treder","email":"contact@maciejtreder.com"},"name":"angular-universal-pwa","version":"1.1.2","description":"Angular Universal PWA boilerplate for serverless environment.","repository":{"type":"git","url":"git+https://github.com/maciejtreder/angular-universal-serverless.git"},"scripts":{"build":"tsc -p tsconfig.json","test":"npm run build && jasmine **/*_spec.js","postinstall":"node postinstall.js && opencollective postinstall","prepublish":"npm run build"},"keywords":["schematics","angular","serverless","server side rendering","pwa","progressive web app","lambda","amazon web services","google cloud functions"],"license":"MIT","schematics":"./src/collection.json","dependencies":{"@angular-devkit/core":"^0.4.7","@angular-devkit/schematics":"^0.4.7","@schematics/angular":"^0.4.8","ajv":"^6.4.0","opencollective":"^1.0.3"},"devDependencies":{"jasmine":"^2.8.0","typescript":"~2.7.2","@types/jasmine":"^2.6.0","@types/node":"^8.0.31"},"bugs":{"url":"https://github.com/maciejtreder/angular-universal-serverless/issues"},"homepage":"https://github.com/maciejtreder/angular-universal-serverless#readme","_id":"angular-universal-pwa@1.1.2","_npmVersion":"5.6.0","_nodeVersion":"9.11.1","_npmUser":{"name":"maciejtreder","email":"contact@maciejtreder.com"},"dist":{"integrity":"sha512-AFYSoc5sqxReHXP1fU9H2n6CUr5ZTCzezWRSSVayflKjV3EplXd5bApTYFoQ0WYoNcgKBUZVdI43usFBKWmHtg==","shasum":"8152da79e834b369ea8b9857835073354f6b96db","tarball":"https://registry.npmjs.org/angular-universal-pwa/-/angular-universal-pwa-1.1.2.tgz","fileCount":122,"unpackedSize":492213,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEo6kRbM0L91VQg/f6s/DGSIXGUtVXVCWlAlKqVwvQ6uAiEA40OtvAe8iZIQjhXjqu5Je2KIlKNBFkUN9NZBFtK3Xuc="}]},"maintainers":[{"name":"maciejtreder","email":"contact@maciejtreder.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/angular-universal-pwa_1.1.2_1522949111664_0.4685548285403385"},"_hasShrinkwrap":false},"2.0.0-beta.0":{"author":{"name":"Maciej Treder","email":"contact@maciejtreder.com"},"name":"angular-universal-pwa","version":"2.0.0-beta.0","description":"Angular Universal PWA boilerplate for serverless environment.","repository":{"type":"git","url":"git+https://github.com/maciejtreder/angular-universal-serverless.git"},"scripts":{"build":"tsc -p tsconfig.json","test":"npm run build && jasmine **/*_spec.js","postinstall":"node postinstall.js && opencollective postinstall","prepublish":"npm run build"},"keywords":["schematics","angular","serverless","server side rendering","pwa","progressive web app","lambda","amazon web services","google cloud functions"],"license":"MIT","schematics":"./src/collection.json","dependencies":{"@angular-devkit/core":"^0.4.7","@angular-devkit/schematics":"^0.4.7","@schematics/angular":"^0.4.8","ajv":"^6.4.0","opencollective":"^1.0.3"},"devDependencies":{"jasmine":"^2.8.0","typescript":"~2.7.2","@types/jasmine":"^2.6.0","@types/node":"^8.0.31"},"readme":"[![Maintainability](https://api.codeclimate.com/v1/badges/feb1889ed8bd09672fae/maintainability)](https://codeclimate.com/github/maciejtreder/angular-universal-pwa/maintainability)\n[![Test Coverage](https://api.codeclimate.com/v1/badges/feb1889ed8bd09672fae/test_coverage)](https://codeclimate.com/github/maciejtreder/angular-universal-pwa/test_coverage) \n[![Build Status](https://travis-ci.org/maciejtreder/angular-universal-pwa.png)](https://travis-ci.org/maciejtreder/angular-universal-pwa)\n[![Dependency Status](https://david-dm.org/maciejtreder/angular-universal-pwa.svg)](https://david-dm.org/maciejtreder/angular-universal-pwa)\n[![Backers on Open Collective](https://opencollective.com/angular-universal-pwa/backers/badge.svg)](#backers) \n[![Sponsors on Open Collective](https://opencollective.com/angular-universal-pwa/sponsors/badge.svg)](#sponsors)\n\n# Angular 5/6 Universal Progressive Web App - starter [![Tweet](https://img.shields.io/twitter/url/http/shields.io.svg?style=social&logo=twitter)](https://twitter.com/intent/tweet?text=Check%20out%20Angular%20Universal%20PWA%20boilerplate&url=https://github.com/maciejtreder/angular-universal-pwa&via=maciejtreder&hashtags=angular,pwa,webapp,software,developers)\n![angular-universal-PWA report](https://raw.github.com/maciejtreder/angular-universal-pwa/master/application/src/assets/img/lighthouse_report.png)\n\n### _**Star it and share with others!**_\nThis repo is the boilerplate for **(PWA) progressive web app** with Angular Universal (serverside rendering).\nIt is prepared to be easily deployed on serverless environment (Google Cloud Functions & AWS Lambda supported).\n\n## Live demo\n[Angular Universal PWA on AWS Lambda + API Gateway](https://www.angular-universal-pwa.maciejtreder.com)\n\n## Content\n - [What's inside?](#wi)\n - [Getting started](#start)\n - [Deployment](#deploy)\n - [To do](#todo)\n - [Question, Problem, Feature Request](#question)\n - [Funding](#funding)\n - [Credentials](#credentials)\n\n\n\n\n## <a name=\"wi\"></a> What's inside?\n* PWA - content is cached and available offline, it can be also installed as native app on Android devices and Google Chrome\n* AMP - Accelerated Mobile Pages - super fast initial load (down to ~650ms)\n* Push notifications:\n    * Vapid webpush (Chrome and Firefox) - Using [aws-sns-webpush](https://github.com/maciejtreder/aws-sns-webpush) as back-end\n    * Safari push - Using [aws-sns-webpush](https://github.com/maciejtreder/aws-sns-webpush) as back-end\n* Server-side rendering with Angular Universal\n* TransferState\n* Lazy loading modules\n* External modules (You can split your application into multiple projects and lazy-load them, [read more here](https://github.com/maciejtreder/angular-external-module)) [TBD after CLI merge - [#150](https://github.com/maciejtreder/angular-universal-pwa/issues/150)]\n* Angular Material\n* Unit tests\n* Firebug Lite (great solution for development on touch-screen devices, ie: tablets)\n\n### Used frameworks/technologies\n* Angular 5.x & 6.x\n* Angular CLI 1.x & 6.x\n* Webpack\n* Serverless framework\n\n## <a name=\"start\"></a> Get Started\n\n### Using Angular CLI schematics\n\nAngular 5.x:\n```bash\nnpm install -g angular-universal-pwa\n```\n\nAngular 6.x\n```bash\nnpm install -g angular-universal-pwa@beta\n```\n\nCreate project:\n```bash\nng new --collection angular-universal-pwa myApp\ncd myApp\nnpm start\n```\n\n* Development mode (autoreload only): ```npm start```\n* Development mode (autoreload + unit tests): ```npm run build:dev```\n* Development mode (autoreload + firebug lite): ```npm run build:firebug```\n* Development mode (autoreload + firebug lite + unit tests): ```npm run build:dev:firebug```\n* Unit tests: ```npm run test```\n\n\n## <a name=\"deploy\"></a> Deployment\n### Production mode with Node.JS\n```sh\nnpm run build:prod\nnpm run server\n```\n### Serverless environments\n#### AWS Lambda\n```sh\nnpm run build:deploy:aws\n```\n\n#### Google Cloud Functions\n```sh\nnpm run build:deploy:gcloud\n```\n\n## <a name=\"todo\"></a> To do\n* prerender app for 'no-backend' hosting\n* microservices support - make replacement eligible external module without recompiling whole app\n* [ng-http-sw-proxy (all requests done offline, are synced when app comes back online)](https://github.com/maciejtreder/ng-http-sw-proxy) - not working since Angular 5.x (more info can be found in [this issue](https://github.com/webmaxru/pwatter/issues/2))\n* e2e tests\n\n\n## Won't implement:\n* load static content from S3 (JavaScript, styles, images):\n    * when serving all static content from S3 load speed up is not really visible (increase is around ~0,2 sec),\n    * problems with CORS on Chrome,\n    * problems with compression of some files (.js files are not compressed in some cases)\n    * needs a lot of manual setup (cloudfront setup etc.)\n\n\n## <a name=\"question\"></a> Looking for something more?\nFeel free to [create issue with your feature request](https://github.com/maciejtreder/angular-universal-pwa/issues/new)\n\n## <a name=\"funding\"></a> Funding\n\nYou can support development of this project via\n[Open Collective](https://opencollective.com/angular-universal-pwa),\n[Donorbox](https://donorbox.org/angular-universal-pwa),\n[Liberapay](https://liberapay.com/maciejtreder/donate),\n\n\n### Open Collective Backers\n\nSupport this project with a monthly donation and help us continue our activities. [[Become a backer](https://opencollective.com/angular-universal-pwa#backer)]\n\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/0/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/0/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/1/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/1/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/2/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/2/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/3/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/3/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/4/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/4/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/5/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/5/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/6/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/6/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/7/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/7/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/8/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/8/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/9/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/9/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/10/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/10/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/11/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/11/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/12/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/12/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/13/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/13/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/14/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/14/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/15/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/15/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/16/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/16/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/17/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/17/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/18/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/18/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/19/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/19/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/20/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/20/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/21/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/21/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/22/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/22/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/23/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/23/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/24/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/24/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/25/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/25/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/26/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/26/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/27/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/27/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/28/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/28/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/29/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/29/avatar.svg\"></a>\n\n### Open Collective Sponsors\n\nBecome a sponsor and get your logo on our README on GitHub with a link to your site. [[Become a sponsor](https://opencollective.com/angular-universal-pwa#sponsor)]\n\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/0/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/0/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/1/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/1/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/2/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/2/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/3/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/3/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/4/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/4/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/5/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/5/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/6/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/6/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/7/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/7/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/8/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/8/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/9/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/9/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/10/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/10/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/11/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/11/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/12/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/12/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/13/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/13/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/14/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/14/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/15/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/15/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/16/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/16/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/17/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/17/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/18/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/18/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/19/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/19/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/20/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/20/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/21/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/21/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/22/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/22/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/23/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/23/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/24/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/24/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/25/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/25/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/26/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/26/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/27/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/27/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/28/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/28/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/29/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/29/avatar.svg\"></a>\n\n\n\n\n\n## <a name=\"credentials\"></a> Credentials\n* Checkout my [home page](https://www.maciejtreder.com) and find out more about me\n* Inspired by [ng-universal-demo](https://github.com/FrozenPandaz/ng-universal-demo)\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/maciejtreder/angular-universal-serverless/issues"},"homepage":"https://github.com/maciejtreder/angular-universal-serverless#readme","_id":"angular-universal-pwa@2.0.0-beta.0","_npmVersion":"5.6.0","_nodeVersion":"9.11.1","_npmUser":{"name":"maciejtreder","email":"contact@maciejtreder.com"},"dist":{"integrity":"sha512-D8uNZxTxcQtGZPcIm8zPkJvpx7S176BUPSJqIA7Q9+D/Jc5PK1UtC2KZNs3oC9UjY5ljWFaKkVD8nHKS2ajL+w==","shasum":"c86bf69df1410627f295be42b61f5fd02666da2e","tarball":"https://registry.npmjs.org/angular-universal-pwa/-/angular-universal-pwa-2.0.0-beta.0.tgz","fileCount":124,"unpackedSize":496918,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDcdBhJ55mEtOk15CFOWHoC3VJ0EJj5FLgadAQFLp7rUwIhALFPiX+G1CBvH/PzgFyhDoH+wfSW5CWYFQU+YTc6wdch"}]},"maintainers":[{"name":"maciejtreder","email":"contact@maciejtreder.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/angular-universal-pwa_2.0.0-beta.0_1523465691344_0.08764141787337532"},"_hasShrinkwrap":false},"2.0.0-beta.1":{"author":{"name":"Maciej Treder","email":"contact@maciejtreder.com"},"name":"angular-universal-pwa","version":"2.0.0-beta.1","description":"Angular Universal PWA boilerplate for serverless environment.","repository":{"type":"git","url":"git+https://github.com/maciejtreder/angular-universal-serverless.git"},"scripts":{"build":"tsc -p tsconfig.json","test":"npm run build && jasmine **/*_spec.js","postinstall":"node postinstall.js && opencollective postinstall","prepublish":"npm run build"},"keywords":["schematics","angular","serverless","server side rendering","pwa","progressive web app","lambda","amazon web services","google cloud functions"],"license":"MIT","schematics":"./src/collection.json","dependencies":{"@angular-devkit/core":"^0.4.7","@angular-devkit/schematics":"^0.4.7","@schematics/angular":"^0.4.8","ajv":"^6.4.0","opencollective":"^1.0.3"},"devDependencies":{"jasmine":"^2.8.0","typescript":"~2.7.2","@types/jasmine":"^2.6.0","@types/node":"^8.0.31"},"readme":"[![Maintainability](https://api.codeclimate.com/v1/badges/feb1889ed8bd09672fae/maintainability)](https://codeclimate.com/github/maciejtreder/angular-universal-pwa/maintainability)\n[![Test Coverage](https://api.codeclimate.com/v1/badges/feb1889ed8bd09672fae/test_coverage)](https://codeclimate.com/github/maciejtreder/angular-universal-pwa/test_coverage) \n[![Build Status](https://travis-ci.org/maciejtreder/angular-universal-pwa.png)](https://travis-ci.org/maciejtreder/angular-universal-pwa)\n[![Dependency Status](https://david-dm.org/maciejtreder/angular-universal-pwa.svg)](https://david-dm.org/maciejtreder/angular-universal-pwa)\n[![Backers on Open Collective](https://opencollective.com/angular-universal-pwa/backers/badge.svg)](#backers) \n[![Sponsors on Open Collective](https://opencollective.com/angular-universal-pwa/sponsors/badge.svg)](#sponsors)\n\n# Angular 5/6 Universal Progressive Web App - starter [![Tweet](https://img.shields.io/twitter/url/http/shields.io.svg?style=social&logo=twitter)](https://twitter.com/intent/tweet?text=Check%20out%20Angular%20Universal%20PWA%20boilerplate&url=https://github.com/maciejtreder/angular-universal-pwa&via=maciejtreder&hashtags=angular,pwa,webapp,software,developers)\n![angular-universal-PWA report](https://raw.github.com/maciejtreder/angular-universal-pwa/master/application/src/assets/img/lighthouse_report.png)\n\n### _**Star it and share with others!**_\nThis repo is the boilerplate for **(PWA) progressive web app** with Angular Universal (serverside rendering).\nIt is prepared to be easily deployed on serverless environment (Google Cloud Functions & AWS Lambda supported).\n\n## Live demo\n[Angular Universal PWA on AWS Lambda + API Gateway](https://www.angular-universal-pwa.maciejtreder.com)\n\n## Content\n - [What's inside?](#wi)\n - [Getting started](#start)\n - [Deployment](#deploy)\n - [To do](#todo)\n - [Question, Problem, Feature Request](#question)\n - [Funding](#funding)\n - [Credentials](#credentials)\n\n\n\n\n## <a name=\"wi\"></a> What's inside?\n* PWA - content is cached and available offline, it can be also installed as native app on Android devices and Google Chrome\n* AMP - Accelerated Mobile Pages - super fast initial load (down to ~650ms)\n* Push notifications:\n    * Vapid webpush (Chrome and Firefox) - Using [aws-sns-webpush](https://github.com/maciejtreder/aws-sns-webpush) as back-end\n    * Safari push - Using [aws-sns-webpush](https://github.com/maciejtreder/aws-sns-webpush) as back-end\n* Server-side rendering with Angular Universal\n* TransferState\n* Lazy loading modules\n* External modules (You can split your application into multiple projects and lazy-load them, [read more here](https://github.com/maciejtreder/angular-external-module)) [TBD after CLI merge - [#150](https://github.com/maciejtreder/angular-universal-pwa/issues/150)]\n* Angular Material\n* Unit tests\n* Firebug Lite (great solution for development on touch-screen devices, ie: tablets)\n\n### Used frameworks/technologies\n* Angular 5.x & 6.x\n* Angular CLI 1.x & 6.x\n* Webpack\n* Serverless framework\n\n## <a name=\"start\"></a> Get Started\n\n### Using Angular CLI schematics\n\nAngular 5.x:\n```bash\nnpm install -g angular-universal-pwa\n```\n\nAngular 6.x\n```bash\nnpm install -g angular-universal-pwa@beta\n```\n\nCreate project:\n```bash\nng new --collection angular-universal-pwa myApp\ncd myApp\nnpm start\n```\n\n* Development mode (autoreload only): ```npm start```\n* Development mode (autoreload + unit tests): ```npm run build:dev```\n* Development mode (autoreload + firebug lite): ```npm run build:firebug```\n* Development mode (autoreload + firebug lite + unit tests): ```npm run build:dev:firebug```\n* Unit tests: ```npm run test```\n\n\n## <a name=\"deploy\"></a> Deployment\n### Production mode with Node.JS\n```sh\nnpm run build:prod\nnpm run server\n```\n### Serverless environments\n#### AWS Lambda\n```sh\nnpm run build:deploy:aws\n```\n\n#### Google Cloud Functions\n```sh\nnpm run build:deploy:gcloud\n```\n\n## <a name=\"todo\"></a> To do\n* prerender app for 'no-backend' hosting\n* microservices support - make replacement eligible external module without recompiling whole app\n* [ng-http-sw-proxy (all requests done offline, are synced when app comes back online)](https://github.com/maciejtreder/ng-http-sw-proxy) - not working since Angular 5.x (more info can be found in [this issue](https://github.com/webmaxru/pwatter/issues/2))\n* e2e tests\n\n\n## Won't implement:\n* load static content from S3 (JavaScript, styles, images):\n    * when serving all static content from S3 load speed up is not really visible (increase is around ~0,2 sec),\n    * problems with CORS on Chrome,\n    * problems with compression of some files (.js files are not compressed in some cases)\n    * needs a lot of manual setup (cloudfront setup etc.)\n\n\n## <a name=\"question\"></a> Looking for something more?\nFeel free to [create issue with your feature request](https://github.com/maciejtreder/angular-universal-pwa/issues/new)\n\n## <a name=\"funding\"></a> Funding\n\nYou can support development of this project via\n[Open Collective](https://opencollective.com/angular-universal-pwa),\n[Donorbox](https://donorbox.org/angular-universal-pwa),\n[Liberapay](https://liberapay.com/maciejtreder/donate),\n\n\n### Open Collective Backers\n\nSupport this project with a monthly donation and help us continue our activities. [[Become a backer](https://opencollective.com/angular-universal-pwa#backer)]\n\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/0/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/0/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/1/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/1/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/2/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/2/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/3/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/3/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/4/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/4/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/5/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/5/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/6/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/6/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/7/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/7/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/8/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/8/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/9/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/9/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/10/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/10/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/11/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/11/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/12/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/12/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/13/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/13/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/14/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/14/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/15/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/15/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/16/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/16/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/17/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/17/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/18/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/18/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/19/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/19/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/20/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/20/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/21/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/21/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/22/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/22/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/23/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/23/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/24/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/24/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/25/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/25/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/26/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/26/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/27/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/27/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/28/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/28/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/29/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/29/avatar.svg\"></a>\n\n### Open Collective Sponsors\n\nBecome a sponsor and get your logo on our README on GitHub with a link to your site. [[Become a sponsor](https://opencollective.com/angular-universal-pwa#sponsor)]\n\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/0/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/0/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/1/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/1/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/2/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/2/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/3/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/3/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/4/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/4/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/5/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/5/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/6/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/6/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/7/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/7/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/8/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/8/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/9/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/9/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/10/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/10/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/11/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/11/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/12/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/12/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/13/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/13/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/14/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/14/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/15/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/15/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/16/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/16/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/17/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/17/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/18/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/18/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/19/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/19/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/20/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/20/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/21/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/21/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/22/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/22/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/23/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/23/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/24/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/24/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/25/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/25/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/26/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/26/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/27/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/27/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/28/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/28/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/29/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/29/avatar.svg\"></a>\n\n\n\n\n\n## <a name=\"credentials\"></a> Credentials\n* Checkout my [home page](https://www.maciejtreder.com) and find out more about me\n* Inspired by [ng-universal-demo](https://github.com/FrozenPandaz/ng-universal-demo)\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/maciejtreder/angular-universal-serverless/issues"},"homepage":"https://github.com/maciejtreder/angular-universal-serverless#readme","_id":"angular-universal-pwa@2.0.0-beta.1","_npmVersion":"5.6.0","_nodeVersion":"9.11.1","_npmUser":{"name":"maciejtreder","email":"contact@maciejtreder.com"},"dist":{"integrity":"sha512-ube1LfJL3xb3eTgIV9h7CMR2i/ZFT9rH11/82xfbQy/J+RsGQycsilXm83pLxnoJzlMUQ5LFggX1phpWFpO1bg==","shasum":"48eea8d6c7273edc834c864dc9a4825c2a28ccd2","tarball":"https://registry.npmjs.org/angular-universal-pwa/-/angular-universal-pwa-2.0.0-beta.1.tgz","fileCount":123,"unpackedSize":496841,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCXYvs8MtA3utXtKI3k/aJ75Uecx4F0n8u2NR8er0lFMwIgcpdYsWr8a5SX1O+atxTgDeteXnloc9sszJSO1OsaxG4="}]},"maintainers":[{"name":"maciejtreder","email":"contact@maciejtreder.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/angular-universal-pwa_2.0.0-beta.1_1523636176685_0.15087224975179092"},"_hasShrinkwrap":false},"2.0.0-beta.2":{"author":{"name":"Maciej Treder","email":"contact@maciejtreder.com"},"name":"angular-universal-pwa","version":"2.0.0-beta.2","description":"Angular Universal PWA boilerplate for serverless environment.","repository":{"type":"git","url":"git+https://github.com/maciejtreder/angular-universal-serverless.git"},"scripts":{"build":"tsc -p tsconfig.json","test":"npm run build && jasmine **/*_spec.js","postinstall":"node postinstall.js && opencollective postinstall","prepublish":"npm run build"},"keywords":["schematics","angular","serverless","server side rendering","pwa","progressive web app","lambda","amazon web services","google cloud functions"],"license":"MIT","schematics":"./src/collection.json","dependencies":{"@angular-devkit/core":"^0.5.6","@angular-devkit/schematics":"^0.5.6","@schematics/angular":"^0.5.6","opencollective":"^1.0.3"},"devDependencies":{"jasmine":"^2.8.0","typescript":"~2.7.2","@types/jasmine":"^2.6.0","@types/node":"^8.0.31"},"readme":"[![Maintainability](https://api.codeclimate.com/v1/badges/feb1889ed8bd09672fae/maintainability)](https://codeclimate.com/github/maciejtreder/angular-universal-pwa/maintainability)\n[![Test Coverage](https://api.codeclimate.com/v1/badges/feb1889ed8bd09672fae/test_coverage)](https://codeclimate.com/github/maciejtreder/angular-universal-pwa/test_coverage) \n[![Build Status](https://travis-ci.org/maciejtreder/angular-universal-pwa.png)](https://travis-ci.org/maciejtreder/angular-universal-pwa)\n[![Dependency Status](https://david-dm.org/maciejtreder/angular-universal-pwa.svg)](https://david-dm.org/maciejtreder/angular-universal-pwa)\n[![Backers on Open Collective](https://opencollective.com/angular-universal-pwa/backers/badge.svg)](#backers) \n[![Sponsors on Open Collective](https://opencollective.com/angular-universal-pwa/sponsors/badge.svg)](#sponsors)\n\n# Angular 5/6 Universal Progressive Web App - starter [![Tweet](https://img.shields.io/twitter/url/http/shields.io.svg?style=social&logo=twitter)](https://twitter.com/intent/tweet?text=Check%20out%20Angular%20Universal%20PWA%20boilerplate&url=https://github.com/maciejtreder/angular-universal-pwa&via=maciejtreder&hashtags=angular,pwa,webapp,software,developers)\n![angular-universal-PWA report](https://raw.github.com/maciejtreder/angular-universal-pwa/master/application/src/assets/img/lighthouse_report.png)\n\n### _**Star it and share with others!**_\nThis repo is the boilerplate for **(PWA) progressive web app** with Angular Universal (serverside rendering).\nIt is prepared to be easily deployed on serverless environment (Google Cloud Functions & AWS Lambda supported).\n\n## Live demo\n[Angular Universal PWA on AWS Lambda + API Gateway](https://www.angular-universal-pwa.maciejtreder.com)\n\n## Content\n - [What's inside?](#wi)\n - [Getting started](#start)\n - [Deployment](#deploy)\n - [To do](#todo)\n - [Question, Problem, Feature Request](#question)\n - [Funding](#funding)\n - [Credentials](#credentials)\n\n\n\n\n## <a name=\"wi\"></a> What's inside?\n* PWA - content is cached and available offline, it can be also installed as native app on Android devices and Google Chrome\n* AMP - Accelerated Mobile Pages - super fast initial load (down to ~650ms)\n* Push notifications:\n    * Vapid webpush (Chrome and Firefox) - Using [aws-sns-webpush](https://github.com/maciejtreder/aws-sns-webpush) as back-end\n    * Safari push - Using [aws-sns-webpush](https://github.com/maciejtreder/aws-sns-webpush) as back-end\n* Server-side rendering with Angular Universal\n* TransferState\n* Lazy loading modules\n* External modules (You can split your application into multiple projects and lazy-load them, [read more here](https://github.com/maciejtreder/angular-external-module)) [TBD after CLI merge - [#150](https://github.com/maciejtreder/angular-universal-pwa/issues/150)]\n* Angular Material\n* Unit tests\n* Firebug Lite (great solution for development on touch-screen devices, ie: tablets)\n\n### Used frameworks/technologies\n* Angular 5.x & 6.x\n* Angular CLI 1.x & 6.x\n* Webpack\n* Serverless framework\n\n## <a name=\"start\"></a> Get Started\n\n### Using Angular CLI schematics\n\nAngular 5.x:\n```bash\nnpm install -g angular-universal-pwa\n```\n\nAngular 6.x\n```bash\nnpm install -g angular-universal-pwa@beta\n```\n\nCreate project:\n```bash\nng new --collection angular-universal-pwa myApp\ncd myApp\nnpm start\n```\n\n* Development mode (autoreload only): ```npm start```\n* Development mode (autoreload + unit tests): ```npm run build:dev```\n* Development mode (autoreload + firebug lite): ```npm run build:firebug```\n* Development mode (autoreload + firebug lite + unit tests): ```npm run build:dev:firebug```\n* Unit tests: ```npm run test```\n\n\n## <a name=\"deploy\"></a> Deployment\n### Production mode with Node.JS\n```sh\nnpm run build:prod\nnpm run server\n```\n### Serverless environments\n#### AWS Lambda\n```sh\nnpm run build:deploy:aws\n```\n\n#### Google Cloud Functions\n```sh\nnpm run build:deploy:gcloud\n```\n\n## <a name=\"todo\"></a> To do\n* prerender app for 'no-backend' hosting\n* microservices support - make replacement eligible external module without recompiling whole app\n* [ng-http-sw-proxy (all requests done offline, are synced when app comes back online)](https://github.com/maciejtreder/ng-http-sw-proxy) - not working since Angular 5.x (more info can be found in [this issue](https://github.com/webmaxru/pwatter/issues/2))\n* e2e tests\n\n\n## Won't implement:\n* load static content from S3 (JavaScript, styles, images):\n    * when serving all static content from S3 load speed up is not really visible (increase is around ~0,2 sec),\n    * problems with CORS on Chrome,\n    * problems with compression of some files (.js files are not compressed in some cases)\n    * needs a lot of manual setup (cloudfront setup etc.)\n\n\n## <a name=\"question\"></a> Looking for something more?\nFeel free to [create issue with your feature request](https://github.com/maciejtreder/angular-universal-pwa/issues/new)\n\n## <a name=\"funding\"></a> Funding\n\nYou can support development of this project via\n[Open Collective](https://opencollective.com/angular-universal-pwa),\n[Donorbox](https://donorbox.org/angular-universal-pwa),\n[Liberapay](https://liberapay.com/maciejtreder/donate),\n\n\n### Open Collective Backers\n\nSupport this project with a monthly donation and help us continue our activities. [[Become a backer](https://opencollective.com/angular-universal-pwa#backer)]\n\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/0/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/0/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/1/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/1/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/2/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/2/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/3/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/3/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/4/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/4/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/5/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/5/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/6/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/6/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/7/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/7/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/8/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/8/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/9/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/9/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/10/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/10/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/11/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/11/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/12/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/12/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/13/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/13/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/14/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/14/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/15/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/15/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/16/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/16/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/17/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/17/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/18/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/18/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/19/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/19/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/20/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/20/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/21/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/21/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/22/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/22/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/23/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/23/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/24/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/24/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/25/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/25/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/26/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/26/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/27/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/27/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/28/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/28/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/29/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/29/avatar.svg\"></a>\n\n### Open Collective Sponsors\n\nBecome a sponsor and get your logo on our README on GitHub with a link to your site. [[Become a sponsor](https://opencollective.com/angular-universal-pwa#sponsor)]\n\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/0/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/0/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/1/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/1/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/2/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/2/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/3/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/3/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/4/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/4/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/5/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/5/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/6/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/6/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/7/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/7/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/8/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/8/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/9/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/9/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/10/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/10/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/11/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/11/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/12/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/12/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/13/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/13/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/14/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/14/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/15/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/15/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/16/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/16/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/17/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/17/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/18/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/18/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/19/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/19/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/20/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/20/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/21/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/21/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/22/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/22/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/23/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/23/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/24/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/24/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/25/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/25/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/26/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/26/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/27/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/27/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/28/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/28/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/29/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/29/avatar.svg\"></a>\n\n\n\n\n\n## <a name=\"credentials\"></a> Credentials\n* Checkout my [home page](https://www.maciejtreder.com) and find out more about me\n* Inspired by [ng-universal-demo](https://github.com/FrozenPandaz/ng-universal-demo)\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/maciejtreder/angular-universal-serverless/issues"},"homepage":"https://github.com/maciejtreder/angular-universal-serverless#readme","_id":"angular-universal-pwa@2.0.0-beta.2","_npmVersion":"5.6.0","_nodeVersion":"9.11.1","_npmUser":{"name":"maciejtreder","email":"contact@maciejtreder.com"},"dist":{"integrity":"sha512-NP+ON3ZQjBip7/tPohRr81YpbHfojYKB9Yt5ViNl7Zv+XGJ2xoUFPRNU4THIcPeYfn0tUYZtfrelDBK8JIFY0w==","shasum":"87d168f93c095e0123bb9604d37f8a2f358c0539","tarball":"https://registry.npmjs.org/angular-universal-pwa/-/angular-universal-pwa-2.0.0-beta.2.tgz","fileCount":128,"unpackedSize":502444,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa08jwCRA9TVsSAnZWagAAewEQAJV/ry4jnGd/8h04A18m\n1fIlOKEMcnj0nTL84UcMkVA7wEW/vFjjH4BN7MzJXVPUz8v376nkuwIPTpW8\nBrFvFqLBuwN6R6e1jwH+W2bdgk6ZDm3axZpnW4v+2yWcOyhSpyvmLDPT771Z\nL9n9Aqu1kHf7RzKkA1gQicIRRCVDv60mY8DRg92CJFobx+K6k9Qnk2+EVn8g\nDKDIAABKvtWbYWwP66VOrwfIROVI3jf+5qlUr2VEP4J5ZPNO6SJhekD3UKVl\nFik4py16R9tL5RnJ5PWII9Ee+Ka2o4HwPI1ZWS8HyWO07TlAVCW+j5bamFvg\nObAgc1JU+MSb94Tasv584U658n0PUzFrXqdTiWopEe/y/5HLtV6FwsNdAA9N\nmed7DbmEl0j2HN78hHY7nTCLz1pqnbx+T1tuG+beIWrmmlM6hN9E8kUNkGKC\nEmhQO7J/yxN+k068sLgS7wuIEn4jqjsBt17eUlxs+ZVDGTozC8RM5JYOAHlk\nOsDsknNBU+iD1qmGd0UNFf7edbJKWVH7NFMDtGkXWHJ3yUCWs2p6ua6P9b50\n3n4nwwcZX3+wCj24ZukZ+gDl1pnS9hj/d2J7IanzWk6ixElZSJ6iRXcxVbS8\nb5DF5CdJizIRG42uiY6LV30f98IvbGWeEJSsjzmM6GBYx2k7sbalL+N85J38\nLPPd\r\n=2UEM\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCr4WB9fDJS017u24AmzwZmyz139prQQkt1Vyivu6iSZQIhAMF2pVu/9BcEeziliapeWF+be3Xm+0AlSF8xoWS1Mxp7"}]},"maintainers":[{"name":"maciejtreder","email":"contact@maciejtreder.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/angular-universal-pwa_2.0.0-beta.2_1523828974909_0.1980534476544864"},"_hasShrinkwrap":false},"2.0.0-beta.2-1":{"author":{"name":"Maciej Treder","email":"contact@maciejtreder.com"},"name":"angular-universal-pwa","version":"2.0.0-beta.2-1","description":"Angular Universal PWA boilerplate for serverless environment.","repository":{"type":"git","url":"git+https://github.com/maciejtreder/angular-universal-serverless.git"},"scripts":{"build":"tsc -p tsconfig.json","test":"npm run build && jasmine **/*_spec.js","postinstall":"node postinstall.js && opencollective postinstall","prepublish":"npm run build"},"keywords":["schematics","angular","serverless","server side rendering","pwa","progressive web app","lambda","amazon web services","google cloud functions"],"license":"MIT","schematics":"./src/collection.json","dependencies":{"@angular-devkit/core":"^0.5.6","@angular-devkit/schematics":"^0.5.6","@schematics/angular":"^0.5.6","opencollective":"^1.0.3"},"devDependencies":{"jasmine":"^2.8.0","typescript":"~2.7.2","@types/jasmine":"^2.6.0","@types/node":"^8.0.31"},"readme":"[![Maintainability](https://api.codeclimate.com/v1/badges/feb1889ed8bd09672fae/maintainability)](https://codeclimate.com/github/maciejtreder/angular-universal-pwa/maintainability)\n[![Test Coverage](https://api.codeclimate.com/v1/badges/feb1889ed8bd09672fae/test_coverage)](https://codeclimate.com/github/maciejtreder/angular-universal-pwa/test_coverage) \n[![Build Status](https://travis-ci.org/maciejtreder/angular-universal-pwa.png)](https://travis-ci.org/maciejtreder/angular-universal-pwa)\n[![Dependency Status](https://david-dm.org/maciejtreder/angular-universal-pwa.svg)](https://david-dm.org/maciejtreder/angular-universal-pwa)\n[![Backers on Open Collective](https://opencollective.com/angular-universal-pwa/backers/badge.svg)](#backers) \n[![Sponsors on Open Collective](https://opencollective.com/angular-universal-pwa/sponsors/badge.svg)](#sponsors)\n\n# Angular 5/6 Universal Progressive Web App - starter [![Tweet](https://img.shields.io/twitter/url/http/shields.io.svg?style=social&logo=twitter)](https://twitter.com/intent/tweet?text=Check%20out%20Angular%20Universal%20PWA%20boilerplate&url=https://github.com/maciejtreder/angular-universal-pwa&via=maciejtreder&hashtags=angular,pwa,webapp,software,developers)\n![angular-universal-PWA report](https://raw.github.com/maciejtreder/angular-universal-pwa/master/application/src/assets/img/lighthouse_report.png)\n\n### _**Star it and share with others!**_\nThis repo is the boilerplate for **(PWA) progressive web app** with Angular Universal (serverside rendering).\nIt is prepared to be easily deployed on serverless environment (Google Cloud Functions & AWS Lambda supported).\n\n## Live demo\n[Angular Universal PWA on AWS Lambda + API Gateway](https://www.angular-universal-pwa.maciejtreder.com)\n\n## Content\n - [What's inside?](#wi)\n - [Getting started](#start)\n - [Deployment](#deploy)\n - [To do](#todo)\n - [Question, Problem, Feature Request](#question)\n - [Funding](#funding)\n - [Credentials](#credentials)\n\n\n\n\n## <a name=\"wi\"></a> What's inside?\n* PWA - content is cached and available offline, it can be also installed as native app on Android devices and Google Chrome\n* AMP - Accelerated Mobile Pages - super fast initial load (down to ~650ms)\n* Push notifications:\n    * Vapid webpush (Chrome and Firefox) - Using [aws-sns-webpush](https://github.com/maciejtreder/aws-sns-webpush) as back-end\n    * Safari push - Using [aws-sns-webpush](https://github.com/maciejtreder/aws-sns-webpush) as back-end\n* Server-side rendering with Angular Universal\n* TransferState\n* Lazy loading modules\n* External modules (You can split your application into multiple projects and lazy-load them, [read more here](https://github.com/maciejtreder/angular-external-module)) [TBD after CLI merge - [#150](https://github.com/maciejtreder/angular-universal-pwa/issues/150)]\n* Angular Material\n* Unit tests\n* Firebug Lite (great solution for development on touch-screen devices, ie: tablets)\n\n### Used frameworks/technologies\n* Angular 5.x & 6.x\n* Angular CLI 1.x & 6.x\n* Webpack\n* Serverless framework\n\n## <a name=\"start\"></a> Get Started\n\n### Using Angular CLI schematics\n\nAngular 5.x:\n```bash\nnpm install -g angular-universal-pwa\n```\n\nAngular 6.x\n```bash\nnpm install -g angular-universal-pwa@beta\n```\n\nCreate project:\n```bash\nng new --collection angular-universal-pwa myApp\ncd myApp\nnpm start\n```\n\n* Development mode (autoreload only): ```npm start```\n* Development mode (autoreload + unit tests): ```npm run build:dev```\n* Development mode (autoreload + firebug lite): ```npm run build:firebug```\n* Development mode (autoreload + firebug lite + unit tests): ```npm run build:dev:firebug```\n* Unit tests: ```npm run test```\n\n\n## <a name=\"deploy\"></a> Deployment\n### Production mode with Node.JS\n```sh\nnpm run build:prod\nnpm run server\n```\n### Serverless environments\n#### AWS Lambda\n```sh\nnpm run build:deploy:aws\n```\n\n#### Google Cloud Functions\n```sh\nnpm run build:deploy:gcloud\n```\n\n## <a name=\"todo\"></a> To do\n* prerender app for 'no-backend' hosting\n* microservices support - make replacement eligible external module without recompiling whole app\n* [ng-http-sw-proxy (all requests done offline, are synced when app comes back online)](https://github.com/maciejtreder/ng-http-sw-proxy) - not working since Angular 5.x (more info can be found in [this issue](https://github.com/webmaxru/pwatter/issues/2))\n* e2e tests\n\n\n## Won't implement:\n* load static content from S3 (JavaScript, styles, images):\n    * when serving all static content from S3 load speed up is not really visible (increase is around ~0,2 sec),\n    * problems with CORS on Chrome,\n    * problems with compression of some files (.js files are not compressed in some cases)\n    * needs a lot of manual setup (cloudfront setup etc.)\n\n\n## <a name=\"question\"></a> Looking for something more?\nFeel free to [create issue with your feature request](https://github.com/maciejtreder/angular-universal-pwa/issues/new)\n\n## <a name=\"funding\"></a> Funding\n\nYou can support development of this project via\n[Open Collective](https://opencollective.com/angular-universal-pwa),\n[Donorbox](https://donorbox.org/angular-universal-pwa),\n[Liberapay](https://liberapay.com/maciejtreder/donate),\n\n\n### Open Collective Backers\n\nSupport this project with a monthly donation and help us continue our activities. [[Become a backer](https://opencollective.com/angular-universal-pwa#backer)]\n\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/0/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/0/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/1/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/1/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/2/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/2/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/3/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/3/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/4/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/4/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/5/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/5/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/6/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/6/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/7/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/7/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/8/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/8/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/9/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/9/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/10/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/10/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/11/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/11/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/12/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/12/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/13/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/13/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/14/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/14/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/15/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/15/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/16/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/16/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/17/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/17/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/18/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/18/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/19/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/19/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/20/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/20/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/21/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/21/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/22/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/22/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/23/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/23/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/24/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/24/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/25/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/25/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/26/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/26/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/27/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/27/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/28/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/28/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/29/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/29/avatar.svg\"></a>\n\n### Open Collective Sponsors\n\nBecome a sponsor and get your logo on our README on GitHub with a link to your site. [[Become a sponsor](https://opencollective.com/angular-universal-pwa#sponsor)]\n\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/0/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/0/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/1/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/1/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/2/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/2/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/3/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/3/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/4/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/4/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/5/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/5/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/6/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/6/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/7/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/7/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/8/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/8/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/9/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/9/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/10/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/10/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/11/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/11/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/12/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/12/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/13/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/13/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/14/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/14/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/15/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/15/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/16/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/16/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/17/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/17/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/18/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/18/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/19/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/19/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/20/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/20/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/21/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/21/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/22/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/22/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/23/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/23/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/24/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/24/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/25/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/25/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/26/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/26/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/27/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/27/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/28/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/28/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/29/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/29/avatar.svg\"></a>\n\n\n\n\n\n## <a name=\"credentials\"></a> Credentials\n* Checkout my [home page](https://www.maciejtreder.com) and find out more about me\n* Inspired by [ng-universal-demo](https://github.com/FrozenPandaz/ng-universal-demo)\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/maciejtreder/angular-universal-serverless/issues"},"homepage":"https://github.com/maciejtreder/angular-universal-serverless#readme","_id":"angular-universal-pwa@2.0.0-beta.2-1","_npmVersion":"5.6.0","_nodeVersion":"9.11.1","_npmUser":{"name":"maciejtreder","email":"contact@maciejtreder.com"},"dist":{"integrity":"sha512-koup477hBBnHOLIsRJpcrytfVbHgCu2YF2Xocx6kiQqdvGyMfITChz+IKKewwrEHYfmYGM5c8G4b8LawqtWkeQ==","shasum":"5a9cc73300f5ae80e1832dade2c3929260414979","tarball":"https://registry.npmjs.org/angular-universal-pwa/-/angular-universal-pwa-2.0.0-beta.2-1.tgz","fileCount":128,"unpackedSize":502450,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa1FslCRA9TVsSAnZWagAAreUQAJureO5aac91QItTdQ4B\n58hH68271KUY6UOPcc/Gd4R88tBMYuS8meKtwesRGdcMta7QeWNqSVd2Tgf8\nMrzOvBQoS0xSOfiEjM4sLoa2lqOIEA132RCYZjU5UKHeFLtlZeTGiYs0dcwd\nrKkXPg7qY4OTO1DMVac/4Q3I38x0zqWkO3JaQGqFy01+hDPapsN+BABg5As0\nM6xe78hOd9jEUHYuX/vPyrlhYlEXVlCXGWKxVAlMl+gmklL5mpi31Jb4DE+w\n813ZLTgLZaqnHO5imtIVVoEmNGoGvxHEuB1oPOy/DIhTuGrRSBtCp29QbELO\nxiu9RW6xp9+S68biRHybpZ/TEtWUlA3VcOKPXuc/vuBuxuCEa1EibtX4tQHx\nLkXUybaFIXdb/h7BDwHnrtFAEXZ3bAKMVISGO/8KrO8J4rayOtUBtHilGTZO\nN8qKpG1RGIGC/JtlWkkeoU+X8oLP3YuaOIDXwh3EN7t3qH1477ix62TFVE9E\nwj/GKfk/73vAgscbOKJOhzA+i77P57KHVbLVvOr6Ya3/GU2jren+qccRIC+f\nzRP1JPVwnLSBs3yCok9uesQP1sbGhlHTTs190fMU0YMCkGVX3qpdd/OhCV1c\nuWxjoGfVJJSpQZRU9p5eGYc4KtpzqjOHoaW95iTarXJuUst7O8Z4Rd37sER1\n6h93\r\n=kPkK\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDuRu/YStmAsDrPyCRYV0bdBe1TOdzyaBM5qVxJrPHwXgIgO4Je/1akYhQuF3ppBDjk7xowSd+yfypNFkdxuQuZOwI="}]},"maintainers":[{"name":"maciejtreder","email":"contact@maciejtreder.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/angular-universal-pwa_2.0.0-beta.2-1_1523866404523_0.8498764991438155"},"_hasShrinkwrap":false},"2.0.0-beta.3-1":{"author":{"name":"Maciej Treder","email":"contact@maciejtreder.com"},"name":"angular-universal-pwa","version":"2.0.0-beta.3-1","description":"Angular Universal PWA boilerplate for serverless environment.","repository":{"type":"git","url":"git+https://github.com/maciejtreder/angular-universal-serverless.git"},"scripts":{"build":"tsc -p tsconfig.json","test":"npm run build && jasmine **/*_spec.js","postinstall":"node postinstall.js","prepublish":"npm run build"},"keywords":["schematics","angular","serverless","server side rendering","pwa","progressive web app","lambda","amazon web services","google cloud functions"],"license":"MIT","schematics":"./src/collection.json","dependencies":{"@angular-devkit/core":"^0.5.7","@angular-devkit/schematics":"^0.5.7","@schematics/angular":"^0.5.7"},"devDependencies":{"@types/jasmine":"^2.6.0","@types/node":"^8.0.31","jasmine":"^2.8.0","typescript":"~2.7.2"},"readme":"[![Maintainability](https://api.codeclimate.com/v1/badges/feb1889ed8bd09672fae/maintainability)](https://codeclimate.com/github/maciejtreder/angular-universal-pwa/maintainability)\n[![Test Coverage](https://api.codeclimate.com/v1/badges/feb1889ed8bd09672fae/test_coverage)](https://codeclimate.com/github/maciejtreder/angular-universal-pwa/test_coverage) \n[![Build Status](https://travis-ci.org/maciejtreder/angular-universal-pwa.png)](https://travis-ci.org/maciejtreder/angular-universal-pwa)\n[![Dependency Status](https://david-dm.org/maciejtreder/angular-universal-pwa.svg)](https://david-dm.org/maciejtreder/angular-universal-pwa)\n[![Backers on Open Collective](https://opencollective.com/angular-universal-pwa/backers/badge.svg)](#backers) \n[![Sponsors on Open Collective](https://opencollective.com/angular-universal-pwa/sponsors/badge.svg)](#sponsors)\n\n# Angular 5/6 Universal Progressive Web App - starter [![Tweet](https://img.shields.io/twitter/url/http/shields.io.svg?style=social&logo=twitter)](https://twitter.com/intent/tweet?text=Check%20out%20Angular%20Universal%20PWA%20boilerplate&url=https://github.com/maciejtreder/angular-universal-pwa&via=maciejtreder&hashtags=angular,pwa,webapp,software,developers)\n![angular-universal-PWA report](https://raw.github.com/maciejtreder/angular-universal-pwa/master/application/src/assets/img/lighthouse_report.png)\n\n### _**Star it and share with others!**_\nThis repo is the boilerplate for **(PWA) progressive web app** with Angular Universal (serverside rendering).\nIt is prepared to be easily deployed on serverless environment (Google Cloud Functions & AWS Lambda supported).\n\n## Live demo\n[Angular Universal PWA on AWS Lambda + API Gateway](https://www.angular-universal-pwa.maciejtreder.com)\n\n## Content\n - [What's inside?](#wi)\n - [Getting started](#start)\n - [Deployment](#deploy)\n - [To do](#todo)\n - [Question, Problem, Feature Request](#question)\n - [Funding](#funding)\n - [Credentials](#credentials)\n\n\n\n\n## <a name=\"wi\"></a> What's inside?\n* PWA - content is cached and available offline, it can be also installed as native app on Android devices and Google Chrome\n* AMP - Accelerated Mobile Pages - super fast initial load (down to ~650ms)\n* Push notifications:\n    * Vapid webpush (Chrome and Firefox) - Using [aws-sns-webpush](https://github.com/maciejtreder/aws-sns-webpush) as back-end\n    * Safari push - Using [aws-sns-webpush](https://github.com/maciejtreder/aws-sns-webpush) as back-end\n* Server-side rendering with Angular Universal\n* TransferState\n* Lazy loading modules\n* External modules (You can split your application into multiple projects and lazy-load them, [read more here](https://github.com/maciejtreder/angular-external-module)) [TBD after CLI merge - [#150](https://github.com/maciejtreder/angular-universal-pwa/issues/150)]\n* Angular Material\n* Unit tests\n* Firebug Lite (great solution for development on touch-screen devices, ie: tablets)\n\n### Used frameworks/technologies\n* Angular 5.x & 6.x\n* Angular CLI 1.x & 6.x\n* Webpack\n* Serverless framework\n\n## <a name=\"start\"></a> Get Started\n\n### Using Angular CLI schematics\n\nAngular 5.x:\n```bash\nnpm install -g angular-universal-pwa\n```\n\nAngular 6.x\n```bash\nnpm install -g angular-universal-pwa@beta\n```\n\nCreate project:\n```bash\nng new --collection angular-universal-pwa myApp\ncd myApp\nnpm start\n```\n\n* Development mode (autoreload only): ```npm start```\n* Development mode (autoreload + unit tests): ```npm run build:dev```\n* Development mode (autoreload + firebug lite): ```npm run build:firebug```\n* Development mode (autoreload + firebug lite + unit tests): ```npm run build:dev:firebug```\n* Unit tests: ```npm run test```\n\n\n## <a name=\"deploy\"></a> Deployment\n### Production mode with Node.JS\n```sh\nnpm run build:prod\nnpm run server\n```\n### Serverless environments\n#### AWS Lambda\n```sh\nnpm run build:deploy:aws\n```\n\n#### Google Cloud Functions\n```sh\nnpm run build:deploy:gcloud\n```\n\n## <a name=\"todo\"></a> To do\n* prerender app for 'no-backend' hosting\n* microservices support - make replacement eligible external module without recompiling whole app\n* [ng-http-sw-proxy (all requests done offline, are synced when app comes back online)](https://github.com/maciejtreder/ng-http-sw-proxy) - not working since Angular 5.x (more info can be found in [this issue](https://github.com/webmaxru/pwatter/issues/2))\n* e2e tests\n\n\n## Won't implement:\n* load static content from S3 (JavaScript, styles, images):\n    * when serving all static content from S3 load speed up is not really visible (increase is around ~0,2 sec),\n    * problems with CORS on Chrome,\n    * problems with compression of some files (.js files are not compressed in some cases)\n    * needs a lot of manual setup (cloudfront setup etc.)\n\n\n## <a name=\"question\"></a> Looking for something more?\nFeel free to [create issue with your feature request](https://github.com/maciejtreder/angular-universal-pwa/issues/new)\n\n## <a name=\"funding\"></a> Funding\n\nYou can support development of this project via\n[Open Collective](https://opencollective.com/angular-universal-pwa),\n[Donorbox](https://donorbox.org/angular-universal-pwa),\n[Liberapay](https://liberapay.com/maciejtreder/donate),\n\n\n### Open Collective Backers\n\nSupport this project with a monthly donation and help us continue our activities. [[Become a backer](https://opencollective.com/angular-universal-pwa#backer)]\n\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/0/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/0/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/1/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/1/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/2/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/2/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/3/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/3/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/4/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/4/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/5/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/5/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/6/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/6/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/7/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/7/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/8/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/8/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/9/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/9/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/10/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/10/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/11/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/11/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/12/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/12/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/13/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/13/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/14/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/14/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/15/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/15/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/16/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/16/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/17/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/17/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/18/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/18/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/19/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/19/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/20/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/20/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/21/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/21/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/22/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/22/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/23/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/23/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/24/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/24/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/25/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/25/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/26/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/26/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/27/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/27/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/28/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/28/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/29/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/29/avatar.svg\"></a>\n\n### Open Collective Sponsors\n\nBecome a sponsor and get your logo on our README on GitHub with a link to your site. [[Become a sponsor](https://opencollective.com/angular-universal-pwa#sponsor)]\n\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/0/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/0/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/1/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/1/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/2/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/2/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/3/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/3/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/4/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/4/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/5/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/5/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/6/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/6/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/7/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/7/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/8/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/8/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/9/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/9/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/10/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/10/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/11/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/11/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/12/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/12/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/13/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/13/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/14/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/14/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/15/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/15/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/16/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/16/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/17/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/17/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/18/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/18/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/19/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/19/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/20/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/20/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/21/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/21/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/22/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/22/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/23/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/23/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/24/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/24/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/25/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/25/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/26/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/26/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/27/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/27/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/28/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/28/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/29/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/29/avatar.svg\"></a>\n\n\n\n\n\n## <a name=\"credentials\"></a> Credentials\n* Checkout my [home page](https://www.maciejtreder.com) and find out more about me\n* Inspired by [ng-universal-demo](https://github.com/FrozenPandaz/ng-universal-demo)\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/maciejtreder/angular-universal-serverless/issues"},"homepage":"https://github.com/maciejtreder/angular-universal-serverless#readme","_id":"angular-universal-pwa@2.0.0-beta.3-1","_npmVersion":"5.6.0","_nodeVersion":"8.11.1","_npmUser":{"name":"maciejtreder","email":"contact@maciejtreder.com"},"dist":{"integrity":"sha512-bSRTad41FpH2T9zPedfZ6pDKzhgnCUGDnyNxRqE3KRE97Ky/JI2lj1CXWZ1l5uSPWJRL8phqSjGRwu85cPHb6Q==","shasum":"09971e8d0f22107a5e0c18cda86fa123c9226e23","tarball":"https://registry.npmjs.org/angular-universal-pwa/-/angular-universal-pwa-2.0.0-beta.3-1.tgz","fileCount":129,"unpackedSize":510058,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa1ztqCRA9TVsSAnZWagAA3c4P/12RZLPhwoxGV5+o9d85\nthM3JOhTaBwbd2nYmSundIqwdEc8uAR1zAk4cxdysTXz87/OAt/kz4VzPRsc\n1zh7nPFoslXFFFvqZhrVV/Qq8GwipUA6v+gLzGgBfOusg5iz9hDMvgq05oDv\nZTcC77YUHX7dCUzqO/Kr1X3O/ni2+41egXDx+nXtk3mN2AzJUGop+Pjn86ij\nRzRjOxZd9387nPa55VVydGVGo5KZPcNloS7m2wH0dH365rZ5hIZwt1Iqj295\nVFhNdO0BWs4PLR3geIy63cB/r5idwTugpozGpyuS2kgLAVovRLqNQ0ouvL40\nS87eidbiyCfJGcchLRBPHr3kneU5GVuxLnoL/oZ1IGjRcas7D0mNEXwqVjAD\nfVz5OfIrBfC7h9KaBS9XSaZkafCr73cNn7ZnkUURFkGc5BYBtSZ9bGyBXn0R\n16VSsZwA+bCAJRbiqge4E4wKD3h88atQSJyjt9PTkAFU2wrQhc9HFuGNKkzn\nTc2DXL3wMGUaeTOycZIOJpV7RfCOUJU+HR02nsDAaYEXlSeRQRkOb8Df6yhd\nOizFmviAiSDztAlFUX8TR0DZ8Gfx/mVsbYNpOyo3txD+1VowM5wlQm5vUhbc\nh6DSSf5pvM4V2o6IhDeZ8aGuL8BZYlrEje4AR2lFdtSzVpjntSyOEnwOERQB\n6EEE\r\n=yuqO\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCuHxGvCe7T/vVdDdU+hGIy8w3RLapM3lL6RQKh8FnvUAIgN6kvgciwHs3BqquGD6ESJew4CQq+1gCDRbS+h5tJY/w="}]},"maintainers":[{"name":"maciejtreder","email":"contact@maciejtreder.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/angular-universal-pwa_2.0.0-beta.3-1_1524054889441_0.6472418014867207"},"_hasShrinkwrap":false},"2.0.0-beta.4":{"author":{"name":"Maciej Treder","email":"contact@maciejtreder.com"},"name":"angular-universal-pwa","version":"2.0.0-beta.4","description":"Angular Universal PWA boilerplate for serverless environment.","repository":{"type":"git","url":"git+https://github.com/maciejtreder/angular-universal-serverless.git"},"scripts":{"build":"tsc -p tsconfig.json","test":"npm run build && jasmine **/*_spec.js","postinstall":"node postinstall.js","prepublish":"npm run build"},"keywords":["schematics","angular","serverless","server side rendering","pwa","progressive web app","lambda","amazon web services","google cloud functions"],"license":"MIT","schematics":"./src/collection.json","dependencies":{"@angular-devkit/core":"^0.5.7","@angular-devkit/schematics":"^0.5.7","@schematics/angular":"^0.5.7"},"devDependencies":{"@types/jasmine":"^2.6.0","@types/node":"^8.0.31","jasmine":"^2.8.0","typescript":"~2.7.2"},"readme":"[![Maintainability](https://api.codeclimate.com/v1/badges/feb1889ed8bd09672fae/maintainability)](https://codeclimate.com/github/maciejtreder/angular-universal-pwa/maintainability)\n[![Test Coverage](https://api.codeclimate.com/v1/badges/feb1889ed8bd09672fae/test_coverage)](https://codeclimate.com/github/maciejtreder/angular-universal-pwa/test_coverage) \n[![Build Status](https://travis-ci.org/maciejtreder/angular-universal-pwa.png)](https://travis-ci.org/maciejtreder/angular-universal-pwa)\n[![Dependency Status](https://david-dm.org/maciejtreder/angular-universal-pwa.svg)](https://david-dm.org/maciejtreder/angular-universal-pwa)\n[![Backers on Open Collective](https://opencollective.com/angular-universal-pwa/backers/badge.svg)](#backers) \n[![Sponsors on Open Collective](https://opencollective.com/angular-universal-pwa/sponsors/badge.svg)](#sponsors)\n\n# Angular 5/6 Universal Progressive Web App - starter [![Tweet](https://img.shields.io/twitter/url/http/shields.io.svg?style=social&logo=twitter)](https://twitter.com/intent/tweet?text=Check%20out%20Angular%20Universal%20PWA%20boilerplate&url=https://github.com/maciejtreder/angular-universal-pwa&via=maciejtreder&hashtags=angular,pwa,webapp,software,developers)\n![angular-universal-PWA report](https://raw.github.com/maciejtreder/angular-universal-pwa/master/application/src/assets/img/lighthouse_report.png)\n\n### _**Star it and share with others!**_\nThis repo is the boilerplate for **(PWA) progressive web app** with Angular Universal (serverside rendering).\nIt is prepared to be easily deployed on serverless environment (Google Cloud Functions & AWS Lambda supported).\n\n## Live demo\n[Angular Universal PWA on AWS Lambda + API Gateway](https://www.angular-universal-pwa.maciejtreder.com)\n\n## Content\n - [What's inside?](#wi)\n - [Getting started](#start)\n - [Deployment](#deploy)\n - [To do](#todo)\n - [Question, Problem, Feature Request](#question)\n - [Funding](#funding)\n - [Credentials](#credentials)\n\n\n\n\n## <a name=\"wi\"></a> What's inside?\n* PWA - content is cached and available offline, it can be also installed as native app on Android devices and Google Chrome\n* AMP - Accelerated Mobile Pages - super fast initial load (down to ~650ms)\n* Push notifications:\n    * Vapid webpush (Chrome and Firefox) - Using [aws-sns-webpush](https://github.com/maciejtreder/aws-sns-webpush) as back-end\n    * Safari push - Using [aws-sns-webpush](https://github.com/maciejtreder/aws-sns-webpush) as back-end\n* Server-side rendering with Angular Universal\n* TransferState\n* Lazy loading modules\n* External modules (You can split your application into multiple projects and lazy-load them, [read more here](https://github.com/maciejtreder/angular-external-module)) [TBD after CLI merge - [#150](https://github.com/maciejtreder/angular-universal-pwa/issues/150)]\n* Angular Material\n* Unit tests\n* Firebug Lite (great solution for development on touch-screen devices, ie: tablets)\n\n### Used frameworks/technologies\n* Angular 5.x & 6.x\n* Angular CLI 1.x & 6.x\n* Webpack\n* Serverless framework\n\n## <a name=\"start\"></a> Get Started\n\n### Using Angular CLI schematics\n\nAngular 5.x:\n```bash\nnpm install -g angular-universal-pwa\n```\n\nAngular 6.x\n```bash\nnpm install -g angular-universal-pwa@beta\n```\n\nCreate project:\n```bash\nng new --collection angular-universal-pwa myApp\ncd myApp\nnpm start\n```\n\n#### CLI params\n* `--provider` - What serverless provider you want to use? (`aws` | `gcloud` | `both`) - default `both`\n* `--gaTrackingCode` - Provide your Google Analytics tracking code, to enable GA (ie `--gaTrackingCode UA-123456`)\n* `--firebug` - Decide if you want to download firebug-lite (`true` | `false`) - default `false`\n\n##Running modes\n\n* Development mode (autoreload only): ```npm start```\n* Development mode (autoreload + unit tests): ```npm run build:dev```\n* Development mode (autoreload + firebug lite): ```npm run build:firebug```\n* Development mode (autoreload + firebug lite + unit tests): ```npm run build:dev:firebug```\n* Unit tests: ```npm run test```\n\n\n## <a name=\"deploy\"></a> Deployment\n### Production mode with Node.JS\n```sh\nnpm run build:prod\nnpm run server\n```\n### Serverless environments\n#### AWS Lambda\n\n```bash\nng new --collection angular-universal-pwa myApp\nnpm run build:deploy:aws\n```\nor (since 2.0.0-beta.4)\n```bash\nng new --collection angular-universal-pwa myApp --provider aws\nnpm run build:deploy\n```\n\n#### Google Cloud Functions\n\n```bash\nng new --collection angular-universal-pwa myApp\nnpm run build:deploy:gcloud\n```\nor (since 2.0.0-beta.4)\n```bash\nng new --collection angular-universal-pwa myApp--provider gcloud \nnpm run build:deploy\n```\n\n## <a name=\"todo\"></a> To do\n* prerender app for 'no-backend' hosting\n* microservices support - make replacement eligible external module without recompiling whole app\n* [ng-http-sw-proxy (all requests done offline, are synced when app comes back online)](https://github.com/maciejtreder/ng-http-sw-proxy) - not working since Angular 5.x (more info can be found in [this issue](https://github.com/webmaxru/pwatter/issues/2))\n* e2e tests\n\n\n## Won't implement:\n* load static content from S3 (JavaScript, styles, images):\n    * when serving all static content from S3 load speed up is not really visible (increase is around ~0,2 sec),\n    * problems with CORS on Chrome,\n    * problems with compression of some files (.js files are not compressed in some cases)\n    * needs a lot of manual setup (cloudfront setup etc.)\n\n\n## <a name=\"question\"></a> Looking for something more?\nFeel free to [create issue with your feature request](https://github.com/maciejtreder/angular-universal-pwa/issues/new)\n\n## <a name=\"funding\"></a> Funding\n\nYou can support development of this project via\n[Open Collective](https://opencollective.com/angular-universal-pwa),\n[Donorbox](https://donorbox.org/angular-universal-pwa),\n[Liberapay](https://liberapay.com/maciejtreder/donate),\n\n\n### Open Collective Backers\n\nSupport this project with a monthly donation and help us continue our activities. [[Become a backer](https://opencollective.com/angular-universal-pwa#backer)]\n\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/0/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/0/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/1/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/1/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/2/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/2/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/3/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/3/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/4/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/4/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/5/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/5/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/6/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/6/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/7/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/7/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/8/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/8/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/9/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/9/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/10/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/10/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/11/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/11/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/12/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/12/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/13/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/13/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/14/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/14/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/15/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/15/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/16/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/16/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/17/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/17/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/18/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/18/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/19/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/19/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/20/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/20/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/21/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/21/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/22/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/22/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/23/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/23/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/24/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/24/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/25/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/25/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/26/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/26/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/27/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/27/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/28/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/28/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/29/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/29/avatar.svg\"></a>\n\n### Open Collective Sponsors\n\nBecome a sponsor and get your logo on our README on GitHub with a link to your site. [[Become a sponsor](https://opencollective.com/angular-universal-pwa#sponsor)]\n\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/0/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/0/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/1/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/1/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/2/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/2/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/3/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/3/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/4/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/4/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/5/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/5/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/6/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/6/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/7/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/7/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/8/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/8/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/9/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/9/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/10/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/10/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/11/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/11/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/12/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/12/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/13/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/13/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/14/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/14/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/15/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/15/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/16/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/16/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/17/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/17/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/18/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/18/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/19/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/19/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/20/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/20/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/21/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/21/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/22/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/22/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/23/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/23/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/24/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/24/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/25/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/25/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/26/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/26/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/27/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/27/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/28/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/28/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/29/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/29/avatar.svg\"></a>\n\n\n\n\n\n## <a name=\"credentials\"></a> Credentials\n* Checkout my [home page](https://www.maciejtreder.com) and find out more about me\n* Inspired by [ng-universal-demo](https://github.com/FrozenPandaz/ng-universal-demo)\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/maciejtreder/angular-universal-serverless/issues"},"homepage":"https://github.com/maciejtreder/angular-universal-serverless#readme","_id":"angular-universal-pwa@2.0.0-beta.4","_npmVersion":"5.6.0","_nodeVersion":"10.0.0","_npmUser":{"name":"maciejtreder","email":"contact@maciejtreder.com"},"dist":{"integrity":"sha512-o5ne9h22TR7tcgBRS+z6WSSk1Yn1NuVqu+FFHgtSZ/48jkI8FTGGe0kVDyecceTEdeMQrHaqVZ4CnlDv/8/j0A==","shasum":"34e64533fface3724461c6905090f836c3bcf7c7","tarball":"https://registry.npmjs.org/angular-universal-pwa/-/angular-universal-pwa-2.0.0-beta.4.tgz","fileCount":135,"unpackedSize":525159,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa4IseCRA9TVsSAnZWagAANoQP/jNvz1bMUZXXlQMPSUvD\nQJMcnHGJ9/ZIhfB+9je+I5t4DWxlnbvMTMAkmHCsgXYHcEvivFMV3i3YsYHI\n0unZv1jdsuCH8B+4swP/qRuzaeYuJun5nU+saqXY+Gz+ShShDaagKN2rNrlw\nIZSrkUGWx2xu0FUT2GH0QZj30Q54P1qR+7ym13WSavSOQDJuQH02v+K6w6ur\nb5m3O9q3d5KV1PAx1X5+iO3dWi8TzhMGUlpVUro3GdjN1ECQ6x4TsT+GDcTc\nRfYZBxNKVHAN8YeiMCOZrICeXgrJoqWdYuaGL5iZLuCVceF5dhtmS84k2vEZ\ngeqx8U+KOX8zjxeXKS5SU6AwT/Ys5V8FsJibft0CYGYk/oqC9jWH7rf9m4mB\nDTK1bjCOYKJ6oob8l9OBAKj6zuApZdEs+O6hPFHpLp+/eA1wNDWUeHtq2nAo\nuXed56GyW4Ha7S5FUa0LR5jdswX3bMeOqVJCXjAzatYld37+hG+yX3FEszEO\nFflnQbxNe6D2dq1TfFpuyH5UQdnfc30mBafQ14dtJXwcPOeQTp8i2ggKBKeU\nt2BpTPKQRBsabUDJQTWwHxqavBBmn+PnuLy8Sab3OtgvcrdbIkR9xGXypkmk\nzgAI5VPhptSQdfWdSbWxoKfP/PSxq1oLNu3d8Rt9G2MRWI+xXbVRF9nxQKSF\nUtyI\r\n=DlpV\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICA6+drKsdMrfDqqho55MxzAd18IlAg9MW2/on7aRIq1AiAa4EAfrEmUGZbaTL5ADvaetXolLgnIpZR3xns//pt9kQ=="}]},"maintainers":[{"name":"maciejtreder","email":"contact@maciejtreder.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/angular-universal-pwa_2.0.0-beta.4_1524665117938_0.5479039844763565"},"_hasShrinkwrap":false},"2.0.6":{"author":{"name":"Maciej Treder","email":"contact@maciejtreder.com"},"name":"angular-universal-pwa","version":"2.0.6","description":"Angular Universal PWA boilerplate for serverless environment.","repository":{"type":"git","url":"git+https://github.com/maciejtreder/angular-universal-serverless.git"},"scripts":{"build":"tsc -p tsconfig.json","test":"npm run build && jasmine **/*_spec.js","postinstall":"node postinstall.js","prepublish":"npm run build"},"keywords":["schematics","angular","serverless","server side rendering","pwa","progressive web app","lambda","amazon web services","google cloud functions"],"license":"MIT","schematics":"./src/collection.json","dependencies":{"@angular-devkit/core":"^0.5.7","@angular-devkit/schematics":"^0.5.7","@schematics/angular":"^0.5.7"},"devDependencies":{"@types/jasmine":"^2.6.0","@types/node":"^8.0.31","jasmine":"^2.8.0","typescript":"~2.7.2"},"bugs":{"url":"https://github.com/maciejtreder/angular-universal-serverless/issues"},"homepage":"https://github.com/maciejtreder/angular-universal-serverless#readme","_id":"angular-universal-pwa@2.0.6","_npmVersion":"5.6.0","_nodeVersion":"10.0.0","_npmUser":{"name":"maciejtreder","email":"contact@maciejtreder.com"},"dist":{"integrity":"sha512-sBj9nd9YncJRbkoOf8qKfXKE7rlDXfRVDOoyGQn/BJLfLN+DfFWhY49rIqKGbkawa8hoz9XUGJe9S6zoMjyB9g==","shasum":"214b26d9d784b2f3ff7093539fc8e6b06dbc0013","tarball":"https://registry.npmjs.org/angular-universal-pwa/-/angular-universal-pwa-2.0.6.tgz","fileCount":132,"unpackedSize":559362,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa6j2yCRA9TVsSAnZWagAA/GAQAIkOtXYKOhIVWkyaOnVc\ntSqZLJLFyCIZpiOU483GOTVWfmmUqb2JUZyd6E11QieVtkN6cJsaBmGCccEm\n4+a/0MIZsHgcsJ0NouBkaK573JoK6S9ZW4y7fGF67oV2JgvkehQpsPx9RDsx\nHYXFLYBYNiZksmM3N+LTeT29xBd5hOmKl1K/vC+tQKd15p1ME3ZE8bwmC95f\n3L9sN5p+Ir8dpTzerZN4BTSp7dNbz4jTZuyS0AeXi4nwksCVnZ00dNO6u2Jk\nCYJmt7Pu7kQqGeNXItlF2AgpZm8a91NdAHs8zpaOsq2nidvHLxD3qAbZmSN0\nvAWTvQJGe5T2KxZ4que7X51Hw+XmS6ZxHrDsd2MeQ6m0XJArxUOlRIGudeFq\nbLnLudHW8lCLTSzmcTu0FisS8kNXOcvHfRnf37BhvU8RBcI+8w80I2wNXzY8\na0qWA04zSAfwVsBiYGf3i9pTXFpAHEPrP7gXYXMdzSD6ldtqczN+X3vrqngX\ncfo3/nyU1GcuxNDPfUkV86krhEyXgF/Tvd0GgrWyHOquP9FxavXd97J++XCy\n0XJzCIZ1O3ORMdQi1KvMVNDxEToua5lMGulySPpugAacRPZkLeEY3WuancXF\nnoBtL778MGB5Clk6+bCoFl7qSLYetrxS+nq0tsh4i/3DGTBiJWIvUyz82iLy\nwPxD\r\n=FK41\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIByEVf3Ka56BGbNzZlEibSuWxM44Vod3K5iTSHI0Mqs+AiA/Tby8ofVWYGT1guDM9si1q2CnrBpky0saPxWGYHRCSA=="}]},"maintainers":[{"name":"maciejtreder","email":"contact@maciejtreder.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/angular-universal-pwa_2.0.6_1525300657279_0.47715137962382026"},"_hasShrinkwrap":false},"2.0.8":{"author":{"name":"Maciej Treder","email":"contact@maciejtreder.com"},"name":"angular-universal-pwa","version":"2.0.8","description":"Angular Universal PWA boilerplate for serverless environment.","repository":{"type":"git","url":"git+https://github.com/maciejtreder/angular-universal-serverless.git"},"scripts":{"build":"tsc -p tsconfig.json","test":"npm run build && jasmine **/*_spec.js","postinstall":"node postinstall.js","prepublish":"npm run build"},"keywords":["schematics","angular","serverless","server side rendering","pwa","progressive web app","lambda","amazon web services","google cloud functions"],"license":"MIT","schematics":"./src/collection.json","dependencies":{"@angular-devkit/core":"^0.5.7","@angular-devkit/schematics":"^0.5.7","@schematics/angular":"^0.5.7"},"devDependencies":{"@types/jasmine":"^2.6.0","@types/node":"^8.0.31","jasmine":"^2.8.0","typescript":"~2.7.2"},"bugs":{"url":"https://github.com/maciejtreder/angular-universal-serverless/issues"},"homepage":"https://github.com/maciejtreder/angular-universal-serverless#readme","_id":"angular-universal-pwa@2.0.8","_npmVersion":"5.8.0","_nodeVersion":"8.11.1","_npmUser":{"name":"maciejtreder","email":"contact@maciejtreder.com"},"dist":{"integrity":"sha512-1HlgaPy+Wd+5AQOpKLMo3Ho3lTGoz04kZG+M93UEvEMBFZEaPFRQlFj4121cvks3/amdanBRPNHQKoWPoF3Q1Q==","shasum":"e4f6c1c6741e1e8cd323b7173f3c3156b03632ec","tarball":"https://registry.npmjs.org/angular-universal-pwa/-/angular-universal-pwa-2.0.8.tgz","fileCount":138,"unpackedSize":561570,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa6tDCCRA9TVsSAnZWagAAe8cQAIQLkuIwzoPLehUB1mCk\ng0ltvhjJyzrKke3YYwL07vI2vfRB4ISGyDJ+7s04/VAsEXAr8dncR3+yv0hW\nyBwXvYG2RxoAxcboxNJZ2LA9blMFsuxlmW9/ZlPXY/u8iTHliIiiEvGcoHNS\niU429sgIqQZV9WAY6yCTeiJfYt271Dwm+8dPsMozv5FCBMJbIQgh+HeyJPTJ\nZLW8WagPcD2zL2O3KqOEXnipv8fKdrHdEZzKZ64ZdNWHBabJEtfxQCSKdx/M\nMOOiNnj6zf/uEfVUrBgX0EiLX+AJ96LRr9s0wU4gFSoEGVMq+mx7LmwlGdCA\nzP4QNi8/cgzO3FDR0miCHlieAV3EilV1ADzJs9bem4ergl/Wa+hs0uu7Qa09\nD25kPWcwxeEj+GnwrNkB1l8XMhRReLHbAq4H+2kaMzz5izpS80O2sGnYQE2/\nZoHRZTDu+sdmrLe2YQG71SNu/orC2aRB/Kwyw1EQQGcxaaCKurOKuDrqBF9Z\nvSPkX7wBxdXyUIQBkXJg+PABKA6k07HglO1rme1Ya4gDMk2aEbeYfDzYQZbo\nyrTqMibMoZyYw0r1+cY3km4VhhjqPFUcfq+lpXdkPkkpGNDAIpa83tOPQZL3\n+trWDFoEI8H1mB4yxbIYpkKaLzT/cDna7NQ1Pthuxn6YEia84sUjxN36AdUO\nNHNz\r\n=xurU\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICd29taX5eBSAri4d7pBOcUz3bOxgvmyACImWp73+6GcAiBXeEeKhU0CEMfTA92ZiMZIWBcFBtuku1jdEzyqNL4M2A=="}]},"maintainers":[{"name":"maciejtreder","email":"contact@maciejtreder.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/angular-universal-pwa_2.0.8_1525338305595_0.6377330267770462"},"_hasShrinkwrap":false},"2.0.91":{"author":{"name":"Maciej Treder","email":"contact@maciejtreder.com"},"name":"angular-universal-pwa","version":"2.0.91","description":"Angular Universal PWA boilerplate for serverless environment.","repository":{"type":"git","url":"git+https://github.com/maciejtreder/angular-universal-serverless.git"},"scripts":{"build":"tsc -p tsconfig.json","test":"npm run build && jasmine **/*_spec.js","postinstall":"node postinstall.js","prepublish":"npm run build"},"keywords":["schematics","angular","serverless","server side rendering","pwa","progressive web app","lambda","amazon web services","google cloud functions"],"license":"MIT","schematics":"./src/collection.json","dependencies":{"@angular-devkit/core":"^0.5.7","@angular-devkit/schematics":"^0.5.7","@schematics/angular":"^0.5.7"},"devDependencies":{"@types/jasmine":"^2.6.0","@types/node":"^8.0.31","jasmine":"^2.8.0","typescript":"~2.7.2"},"bugs":{"url":"https://github.com/maciejtreder/angular-universal-serverless/issues"},"homepage":"https://github.com/maciejtreder/angular-universal-serverless#readme","_id":"angular-universal-pwa@2.0.91","_npmVersion":"5.6.0","_nodeVersion":"10.0.0","_npmUser":{"name":"maciejtreder","email":"contact@maciejtreder.com"},"dist":{"integrity":"sha512-prXOyreGCA01a2I4V3dVCWnUTNenjUSenZptrABmWwcwrjJXUlqStXgrVJspE7F8c3cixfNmlZVclsUa0LESeg==","shasum":"8afc8aa05eb201fa2e056c02d2856f1e69030ed2","tarball":"https://registry.npmjs.org/angular-universal-pwa/-/angular-universal-pwa-2.0.91.tgz","fileCount":138,"unpackedSize":561513,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa61vbCRA9TVsSAnZWagAAkFMP/R9iSLQRT2Elfty0XCNT\n5UvEN/K8IYgedGDLDk7Lf16hkstuzFsgJ8xpxQljCNHB9BKxI9D7fSjRU0bf\nj9R39eyKw1KOo7vRHEiToiSTstlxm6BybbwV3Zynb6sf2WsRJged4HvwhIgp\n1BjFVyiAbxMTUZ+RxEkNb3s1QCDljxSRRxcSDtWL7wR6G7gmjB1IJ0qoI0C5\nyHJYOH9du9ked/6V+NyqFuKNkmnTS9tEFMrUY7HhaOgT0KHpOAyE6ZAbG6At\nPD8A5hg2CXRKm2saKBEjUV7xd3GyPCRqt27WkqVZDssJFlBRCyvL4OAQ+SvP\ntTFmhNQcl0OlWO76Vgn6DS9s2/D05j4cK+n1f/0BVlS7TozW4e3hAbyRXo8B\nBn9PrlGKjp3ras0CiwyWlc/6oW5ktR050Mp0x6aflF9lGPxVWQyOZH8A9/Xu\n4MXo4Kn54Psby6tGOofRRdRC8QKusB0BxIzcOGVXdUlTd7qO+wz56JMPz1YM\nOromdOCMvqx0jLaKt/etth3Y3ujMQRfxozCK5PF/Ze66nRyUQ4B0ZJloPs/N\nv2JrEDomVVqDwPWHnZ7W2oZVlAgePJzxiaWRS3DEqT1Lv64OB+j/ysE6skW2\nDhziBd1KeaU7/JN1fil/O4BCauwr5pOu8qNVHO3ZQNhmXqA1ToTJFqhYCTSw\n1di5\r\n=KZww\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBjED6x46JB8V2QOu1IJsHzuzWIRgMn+VAI9czaY6DNZAiB9GUT6GFpr/SNRNzLPw09XbGvyG4PhNmvIKblg1f2ETg=="}]},"maintainers":[{"name":"maciejtreder","email":"contact@maciejtreder.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/angular-universal-pwa_2.0.91_1525373913458_0.007996387624267243"},"_hasShrinkwrap":false},"2.1.0":{"author":{"name":"Maciej Treder","email":"contact@maciejtreder.com"},"name":"angular-universal-pwa","version":"2.1.0","description":"Angular Universal PWA boilerplate for serverless environment.","repository":{"type":"git","url":"git+https://github.com/maciejtreder/angular-universal-serverless.git"},"scripts":{"build":"tsc -p tsconfig.json","test":"npm run build && jasmine **/*_spec.js","postinstall":"node postinstall.js","prepublish":"npm run build"},"keywords":["schematics","angular","serverless","server side rendering","pwa","progressive web app","lambda","amazon web services","google cloud functions"],"license":"MIT","schematics":"./src/collection.json","dependencies":{"@angular-devkit/core":"^0.6.0","@angular-devkit/schematics":"^0.6.0","@schematics/angular":"^0.6.0"},"devDependencies":{"@types/jasmine":"^2.6.0","@types/node":"^8.0.31","jasmine":"^2.8.0","typescript":"~2.7.2"},"bugs":{"url":"https://github.com/maciejtreder/angular-universal-serverless/issues"},"homepage":"https://github.com/maciejtreder/angular-universal-serverless#readme","_id":"angular-universal-pwa@2.1.0","_npmVersion":"5.6.0","_nodeVersion":"10.0.0","_npmUser":{"name":"maciejtreder","email":"contact@maciejtreder.com"},"dist":{"integrity":"sha512-k7I5SKhlhGOf4c46wNib1L2reRPduRTxp1bZBl5DNbkANeOieZWAJC2GRZEsQXBXgDqozq6TKB1nB5FyK9WzFg==","shasum":"8eace161b7ce73b9ebda3218d1c7206e10ee151f","tarball":"https://registry.npmjs.org/angular-universal-pwa/-/angular-universal-pwa-2.1.0.tgz","fileCount":138,"unpackedSize":561512,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa7FkCCRA9TVsSAnZWagAAsxEP/36e5Z2SLwBu/R5dNH7k\n7AY0SZpfFZsxowbm/UBgJkF+5RGNI9ProKbSdMw1RFQJEW8Ve6Lt0SB8nXcq\nI9+mB/LScJfIfkPEZwvDfSpOGHa0YJYnEGV1H6qOlfnm0hLDLY8F7DfUUsOY\n9vHcQsGob/1/3F7rDpWUZtOa654rcJ3TvFRuRFGKEXaEksl6bsIPlop3MU1f\n+FfzlTL+XSr8yir0m7cABxLQsePsWzoH+/d5zLjYfbroFHgVG84foABE/70+\nHhwSImbzt6yiB5U+XwwOcwyQLx2Wl1WXHjIPK3jXCqXfapRt5OHEmFFr4z+f\nbb1zYOWg0Q7AfWtmAWYJIdfB+QBV/ZSA9cRB9eGGWuB4itaXY6rrAkzzoyjh\nuKuj9n37CMgs27J9adaWL8u5Qxggg38v56gCBmBtmDiMQhBTr8lKgsbTInqT\ny2SiLGbRsD9NEhCTuWttTXHchp2bXdIjTUgQ+EORKeaWvl5f/Z41BI8i8G9e\n/eFr66mJsuNhYEXWgX67OAbZ1c4mIzy5+eh2IW52JbKPrKRXGBQFViiqu+lf\nMH8QWy2KsP/bxfEEHcIC18rFjs//6bYLOAisvdmXEV6CHpYDCgUbAshFMAZ5\nbvSnIkFvFYyAmduJGAOQ+FL94aX4O96Kr6LhmiUGxEg99qiMalpVDbaUrltl\nM1EK\r\n=HR0e\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBUdZmSuj8YSisKY9bxEwq3osKmMbhx7Y+x7OL4B6apbAiEAr72qiizLoptmpAWXhnJ2ghpT8z44R2gdKDW0L988bjg="}]},"maintainers":[{"name":"maciejtreder","email":"contact@maciejtreder.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/angular-universal-pwa_2.1.0_1525438721473_0.2801821658872272"},"_hasShrinkwrap":false},"2.1.1":{"author":{"name":"Maciej Treder","email":"contact@maciejtreder.com"},"name":"angular-universal-pwa","version":"2.1.1","description":"Angular Universal PWA boilerplate for serverless environment.","repository":{"type":"git","url":"git+https://github.com/maciejtreder/angular-universal-serverless.git"},"scripts":{"build":"tsc -p tsconfig.json","test":"npm run build && jasmine **/*_spec.js","postinstall":"node postinstall.js","prepublish":"npm run build"},"keywords":["schematics","angular","serverless","server side rendering","pwa","progressive web app","lambda","amazon web services","google cloud functions"],"license":"MIT","schematics":"./src/collection.json","dependencies":{"@angular-devkit/core":"^0.6.0","@angular-devkit/schematics":"^0.6.0","@schematics/angular":"^0.6.0"},"devDependencies":{"@types/jasmine":"^2.6.0","@types/node":"^8.0.31","jasmine":"^2.8.0","typescript":"~2.7.2"},"bugs":{"url":"https://github.com/maciejtreder/angular-universal-serverless/issues"},"homepage":"https://github.com/maciejtreder/angular-universal-serverless#readme","_id":"angular-universal-pwa@2.1.1","_npmVersion":"5.6.0","_nodeVersion":"10.0.0","_npmUser":{"name":"maciejtreder","email":"contact@maciejtreder.com"},"dist":{"integrity":"sha512-kMsOvaKdwWD3O1mfQ1Zam8B+DwACaDGG0cxoBsxtwCnzjgJm3AaTQrKT2MyePaeIbXoldNMVo+cSkDI5VA+KoQ==","shasum":"b57cce8d2c85405f84ae52957a57604fdc04a5b2","tarball":"https://registry.npmjs.org/angular-universal-pwa/-/angular-universal-pwa-2.1.1.tgz","fileCount":138,"unpackedSize":562768,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa7LuVCRA9TVsSAnZWagAA29MQAIMgm0i+4g67N7eQWivn\nZElIBZO7Pu2TsnKrazWDLTTl+qLMRbFnZCDJqBL32QZ8C5jvWSFdpJalM7nH\n7PgvlSdpeunsvuwgVNNYy4DmNrbMT6ZutLlFO59eaKqc64GUWOs4n/e9aqpK\nDknEMZiSOmuS2nxGzURz3NrfRuS/UHN5nPR+TggatbK+AC863PXvsvRQpzxI\nNRN9oSXcLGU9SFEYYpazgcKfxxvs8OWXR+BiNR1L+MewwMYXxIAvhMYFZvOm\n7zilDYXexDG1hXxMb5fWIIQYNlTg51PzbEHDz8pbJER0+nckpcIMGTCiZnwa\nT6wmtz6bjkXGCn+h2v9H2X3VO6zC7p2X97gXJUCewqU0UD8ymAbhzPR/8o9k\nyUgZMIX38yG6//e/c6YgbsYeuq9x/GQojScRjqu8tzXrkOnY9VBiquwyCkPI\nYsDxEieKB4nyZD5nHy/7HPUcEbqvSNCltvnVcKRLWS5QnQdDOofaIqEE0zia\nYV5V4GY3X0whKLEJXc78bBPJxtyphtclcHDqEjJ27Wtx4TRi5bpL/t78rRy9\ns+MgDIlf1Uwfe7lBvmazS1RUM6viUFxxCVayJ1l9IoeAlpBkiBhnWhRarjqz\nDgANwdTLDySCLXedO4MdDW1AvoVh4CTs7Vjea/Rnd7PNvV81jA00IPumYcrk\nr5Oi\r\n=BMge\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDsO9yUIAHhX1vaiqu8TZxEHnErHoK9kcNbun3vLN7jxwIgAlUU5CkdQCSIvtWpmDEFzkj0jZrQKonvjIuV6pV0W4I="}]},"maintainers":[{"name":"maciejtreder","email":"contact@maciejtreder.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/angular-universal-pwa_2.1.1_1525463955473_0.09437068595982367"},"_hasShrinkwrap":false}},"time":{"created":"2018-04-01T15:47:24.823Z","1.0.0":"2018-04-01T15:47:24.972Z","modified":"2022-04-11T14:06:23.325Z","1.0.1":"2018-04-01T15:50:11.036Z","1.0.2":"2018-04-01T15:52:21.784Z","1.0.4":"2018-04-02T09:15:46.140Z","1.0.5":"2018-04-02T09:29:24.716Z","1.0.6":"2018-04-02T09:38:53.536Z","1.0.7":"2018-04-02T12:02:08.156Z","1.0.8":"2018-04-02T12:12:17.514Z","1.0.9":"2018-04-03T06:51:23.740Z","1.0.10":"2018-04-03T07:03:40.034Z","1.0.12":"2018-04-03T07:12:02.563Z","1.0.13":"2018-04-03T07:24:23.371Z","1.0.14":"2018-04-03T07:26:52.379Z","1.0.15":"2018-04-03T07:33:11.140Z","1.0.16":"2018-04-04T16:07:27.235Z","1.0.17":"2018-04-04T16:10:43.308Z","1.0.18":"2018-04-04T16:26:52.218Z","1.0.19":"2018-04-04T16:37:25.912Z","1.0.20":"2018-04-04T16:49:22.797Z","1.0.22":"2018-04-04T17:12:58.648Z","1.0.23":"2018-04-04T18:26:13.882Z","1.1.0":"2018-04-05T17:00:48.955Z","1.1.1":"2018-04-05T17:10:12.694Z","1.1.2":"2018-04-05T17:25:11.778Z","2.0.0-beta":"2018-04-11T16:25:40.292Z","2.0.1-beta":"2018-04-11T16:36:29.095Z","2.0.2-beta":"2018-04-11T16:37:28.986Z","2.0.0-beta.0":"2018-04-11T16:54:51.540Z","2.0.0-beta.0.1":"2018-04-13T15:47:42.464Z","2.0.0-beta.0.2":"2018-04-13T15:52:19.697Z","2.0.0-beta.0.3":"2018-04-13T15:53:06.255Z","2.0.0-beta.1":"2018-04-13T16:16:16.789Z","2.0.0-beta.2.1":"2018-04-15T20:43:38.620Z","2.0.0-beta.2.2":"2018-04-15T21:12:39.846Z","2.0.0-beta.2.3":"2018-04-15T21:18:09.754Z","2.0.0-beta.2.4":"2018-04-15T21:30:19.039Z","2.0.0-beta.2":"2018-04-15T21:49:35.109Z","2.0.0-beta.2.1-1":"2018-04-16T07:39:24.199Z","2.0.0-beta.2-1":"2018-04-16T08:13:24.627Z","2.0.0-beta.3":"2018-04-18T12:31:18.459Z","2.0.0-beta.3-1":"2018-04-18T12:34:49.846Z","2.0.0-beta.4-1":"2018-04-25T13:15:16.363Z","2.0.0-beta.4":"2018-04-25T14:05:18.059Z","2.0.0-beta.5-1":"2018-05-01T15:37:38.889Z","2.0.0-beta.5-2":"2018-05-01T15:39:18.927Z","2.0.0-beta.5-3":"2018-05-01T15:54:49.397Z","2.0.0":"2018-05-01T21:53:35.445Z","2.0.1":"2018-05-01T22:09:55.588Z","2.0.2":"2018-05-02T17:34:26.471Z","2.0.3":"2018-05-02T17:40:26.006Z","2.0.4":"2018-05-02T17:50:22.265Z","2.0.5":"2018-05-02T20:22:51.066Z","2.0.6":"2018-05-02T22:37:37.502Z","2.0.7":"2018-05-03T09:04:14.843Z","2.0.8":"2018-05-03T09:05:05.733Z","2.0.9":"2018-05-03T17:10:46.725Z","2.0.91":"2018-05-03T18:58:33.638Z","2.1.0":"2018-05-04T12:58:41.741Z","2.1.1":"2018-05-04T19:59:15.715Z"},"maintainers":[{"name":"maciejtreder","email":"contact@maciejtreder.com"}],"description":"Angular Universal PWA boilerplate for serverless environment.","homepage":"https://github.com/maciejtreder/angular-universal-serverless#readme","keywords":["schematics","angular","serverless","server side rendering","pwa","progressive web app","lambda","amazon web services","google cloud functions"],"repository":{"type":"git","url":"git+https://github.com/maciejtreder/angular-universal-serverless.git"},"bugs":{"url":"https://github.com/maciejtreder/angular-universal-serverless/issues"},"license":"MIT","readme":"[![Maintainability](https://api.codeclimate.com/v1/badges/feb1889ed8bd09672fae/maintainability)](https://codeclimate.com/github/maciejtreder/angular-universal-pwa/maintainability)\n[![Test Coverage](https://api.codeclimate.com/v1/badges/feb1889ed8bd09672fae/test_coverage)](https://codeclimate.com/github/maciejtreder/angular-universal-pwa/test_coverage) \n[![Build Status](https://travis-ci.org/maciejtreder/angular-universal-pwa.png)](https://travis-ci.org/maciejtreder/angular-universal-pwa)\n[![Dependency Status](https://david-dm.org/maciejtreder/angular-universal-pwa.svg)](https://david-dm.org/maciejtreder/angular-universal-pwa)\n[![Backers on Open Collective](https://opencollective.com/angular-universal-pwa/backers/badge.svg)](#backers) \n[![Sponsors on Open Collective](https://opencollective.com/angular-universal-pwa/sponsors/badge.svg)](#sponsors)\n\n# Angular 5/6 Universal Progressive Web App - starter [![Tweet](https://img.shields.io/twitter/url/http/shields.io.svg?style=social&logo=twitter)](https://twitter.com/intent/tweet?text=Check%20out%20Angular%20Universal%20PWA%20boilerplate&url=https://github.com/maciejtreder/angular-universal-pwa&via=maciejtreder&hashtags=angular,pwa,webapp,software,developers)\n![angular-universal-PWA report](https://raw.github.com/maciejtreder/angular-universal-pwa/master/application/src/assets/img/lighthouse_report.png)\n\n### _**Star it and share with others!**_\nThis repo is the boilerplate for **(PWA) progressive web app** with Angular Universal (serverside rendering).\nIt is prepared to be easily deployed on serverless environment (Google Cloud Functions & AWS Lambda supported).\n\n## Live demo\n[Angular Universal PWA on AWS Lambda + API Gateway](https://www.angular-universal-pwa.maciejtreder.com)\n\n## Content\n - [What's inside?](#wi)\n - [Getting started](#start)\n - [Deployment](#deploy)\n - [To do](#todo)\n - [Question, Problem, Feature Request](#question)\n - [Funding](#funding)\n - [Credentials](#credentials)\n\n## <a name=\"wi\"></a> What's inside?\n* PWA - content is cached and available offline, it can be also installed as native app on Android devices and Google Chrome\n* AMP - Accelerated Mobile Pages - super fast initial load (down to ~650ms)\n* Push notifications:\n    * Vapid webpush (Chrome and Firefox) - Using [aws-sns-webpush](https://github.com/maciejtreder/aws-sns-webpush) as back-end\n    * Safari push - Using [aws-sns-webpush](https://github.com/maciejtreder/aws-sns-webpush) as back-end\n* Server-side rendering with Angular Universal\n* TransferState\n* Lazy loading modules\n* External modules (You can split your application into multiple projects and lazy-load them, [read more here](https://github.com/maciejtreder/angular-external-module)) [TBD after CLI merge - [#150](https://github.com/maciejtreder/angular-universal-pwa/issues/150)]\n* Angular Material\n* Unit tests\n* Firebug Lite (great solution for development on touch-screen devices, ie: tablets)\n\n### Used frameworks/technologies\n* Angular 5.x & 6.x\n* Angular CLI 1.x & 6.x\n* Webpack\n* Serverless framework\n\n## <a name=\"start\"></a> Get Started\nWhatch on Youtube:\n[![How to start project with angular-universal-pwa](https://img.youtube.com/vi/FPWRXSzhjug/0.jpg)](https://www.youtube.com/watch?v=FPWRXSzhjug)\n\n### Using Angular CLI schematics\n\n```bash\nnpm install -g angular-universal-pwa\n```\n\nCreate project:\n```bash\nng new --collection angular-universal-pwa myApp\ncd myApp\nnpm start\n```\n\n#### CLI params\n* `--provider` - What serverless provider you want to use? (`aws` | `gcloud` | `both`) - default `both`\n* `--gaTrackingCode` - Provide your Google Analytics tracking code, to enable GA (ie `--gaTrackingCode UA-123456`)\n* `--firebug` - Decide if you want to download firebug-lite (`true` | `false`) - default `false`\n\n##Running modes\n\n* Development mode (autoreload only): ```npm start```\n* Development mode (autoreload + unit tests): ```npm run build:dev```\n* Development mode (autoreload + firebug lite): ```npm run build:firebug```\n* Development mode (autoreload + firebug lite + unit tests): ```npm run build:dev:firebug```\n* Unit tests: ```npm run test```\n\n\n## <a name=\"deploy\"></a> Deployment\n### Production mode with Node.JS\n```sh\nnpm run build:prod\nnpm run server\n```\n### Serverless environments\n#### AWS Lambda\n\n```bash\nng new --collection angular-universal-pwa myApp --provider aws\nnpm run build:deploy\n```\n\n#### Google Cloud Functions\n\n```bash\nng new --collection angular-universal-pwa myApp--provider gcloud \nnpm run build:deploy\n```\n\n## <a name=\"todo\"></a> To do\n* prerender app for 'no-backend' hosting\n* microservices support - make replacement eligible external module without recompiling whole app\n* [ng-http-sw-proxy (all requests done offline, are synced when app comes back online)](https://github.com/maciejtreder/ng-http-sw-proxy) - not working since Angular 5.x (more info can be found in [this issue](https://github.com/webmaxru/pwatter/issues/2))\n* e2e tests\n\n\n## Won't implement:\n* load static content from S3 (JavaScript, styles, images):\n    * when serving all static content from S3 load speed up is not really visible (increase is around ~0,2 sec),\n    * problems with CORS on Chrome,\n    * problems with compression of some files (.js files are not compressed in some cases)\n    * needs a lot of manual setup (cloudfront setup etc.)\n\n\n## <a name=\"question\"></a> Looking for something more?\nFeel free to [create issue with your feature request](https://github.com/maciejtreder/angular-universal-pwa/issues/new)\n\n## <a name=\"funding\"></a> Funding\n\nYou can support development of this project via\n[Open Collective](https://opencollective.com/angular-universal-pwa),\n[Donorbox](https://donorbox.org/angular-universal-pwa),\n[Liberapay](https://liberapay.com/maciejtreder/donate),\n\n\n### Open Collective Backers\n\nSupport this project with a monthly donation and help us continue our activities. [[Become a backer](https://opencollective.com/angular-universal-pwa#backer)]\n\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/0/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/0/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/1/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/1/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/2/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/2/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/3/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/3/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/4/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/4/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/5/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/5/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/6/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/6/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/7/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/7/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/8/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/8/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/9/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/9/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/10/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/10/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/11/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/11/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/12/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/12/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/13/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/13/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/14/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/14/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/15/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/15/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/16/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/16/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/17/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/17/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/18/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/18/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/19/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/19/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/20/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/20/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/21/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/21/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/22/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/22/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/23/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/23/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/24/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/24/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/25/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/25/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/26/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/26/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/27/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/27/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/28/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/28/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/backer/29/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/backer/29/avatar.svg\"></a>\n\n### Open Collective Sponsors\n\nBecome a sponsor and get your logo on our README on GitHub with a link to your site. [[Become a sponsor](https://opencollective.com/angular-universal-pwa#sponsor)]\n\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/0/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/0/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/1/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/1/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/2/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/2/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/3/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/3/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/4/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/4/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/5/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/5/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/6/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/6/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/7/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/7/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/8/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/8/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/9/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/9/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/10/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/10/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/11/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/11/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/12/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/12/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/13/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/13/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/14/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/14/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/15/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/15/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/16/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/16/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/17/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/17/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/18/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/18/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/19/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/19/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/20/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/20/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/21/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/21/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/22/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/22/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/23/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/23/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/24/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/24/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/25/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/25/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/26/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/26/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/27/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/27/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/28/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/28/avatar.svg\"></a>\n<a href=\"https://opencollective.com/angular-universal-pwa/sponsor/29/website\" target=\"_blank\"><img src=\"https://opencollective.com/angular-universal-pwa/sponsor/29/avatar.svg\"></a>\n\n\n\n\n\n## <a name=\"credentials\"></a> Credentials\n* Checkout my [home page](https://www.maciejtreder.com) and find out more about me\n* Inspired by [ng-universal-demo](https://github.com/FrozenPandaz/ng-universal-demo)\n","readmeFilename":"README.md","author":{"name":"Maciej Treder","email":"contact@maciejtreder.com"}}