/var/www/qr4y.com/www/app
NameSizeModeActions
assets/-0755rm
canvaskit/-0755rm
icons/-0755rm
splash/-0755rm
.DS_Store61480644editdlrm
.last_build_id320644editdlrm
favicon.png11900664editdlrm
flutter.js77350644editdlrm
flutter_bootstrap.js80610644editdlrm
flutter_service_worker.js227420644editdlrm
index.html25140644editdlrm
main.dart.js52867440644editdlrm
manifest.json5800644editdlrm
version.json810644editdlrm
Edit: /var/www/qr4y.com/www/app/flutter_service_worker.js (22742B)
'use strict'; const MANIFEST = 'flutter-app-manifest'; const TEMP = 'flutter-temp-cache'; const CACHE_NAME = 'flutter-app-cache'; const RESOURCES = {"flutter_bootstrap.js": "62240dc5682859e7a7ce726d7f248037", "version.json": "f5da916ab75c94fbfcb6605cff99fef5", "splash/img/light-2x.png": "e62de9b5322fbcd0e1172f4b2c8d8191", "splash/img/dark-4x.png": "b50865f3b661851069527d9a5cdc5bec", "splash/img/light-3x.png": "cfadc76e37616b020653ebafa1345ef7", "splash/img/dark-3x.png": "cfadc76e37616b020653ebafa1345ef7", "splash/img/light-4x.png": "b50865f3b661851069527d9a5cdc5bec", "splash/img/dark-2x.png": "e62de9b5322fbcd0e1172f4b2c8d8191", "splash/img/dark-1x.png": "1cb2188b6ad95ea9177312e2f017962b", "splash/img/light-1x.png": "1cb2188b6ad95ea9177312e2f017962b", "splash/splash.js": "123c400b58bea74c1305ca3ac966748d", "splash/style.css": "3e8699dd65a865ff991ec5b47a93643d", "index.html": "4b0aa93fe254254afb7203b4b6ff6ac6", "/": "4b0aa93fe254254afb7203b4b6ff6ac6", "main.dart.js": "2b62fabeffcbe6ac1c8e8c9fa98c2a24", "flutter.js": "76f08d47ff9f5715220992f993002504", "favicon/site.webmanifest": "053100cb84a50d2ae7f5492f7dd7f25e", "favicon.png": "af12f8a72d4a1c813075031bec53ab4f", "icons/favicon-16x16.png": "e2c52bf89eab244ffeedaefe10e21a98", "icons/favicon.ico": "a143c8706d828561c73f9f4730a218d7", "icons/android-chrome-192x192.png": "39a44893b1f24e66a33abcf92a06bba1", "icons/apple-touch-icon.png": "b601e33f6867caa4e1f72af86752ce83", "icons/android-chrome-512x512.png": "f5bb623963411e0c54601d841611abc5", "icons/favicon-32x32.png": "af12f8a72d4a1c813075031bec53ab4f", "manifest.json": "7541837d4e7e97af2cd10db4c6b1faa9", "assets/AssetManifest.json": "86fc9ada9b17308a05d999dedcefe427", "assets/NOTICES": "598084ae03ff5d8e1e781bb730035b79", "assets/FontManifest.json": "c73aa3f9a59db372d2b7bff2f6f407bb", "assets/AssetManifest.bin.json": "22e8420763355cdcfc831e2a5225319c", "assets/shaders/ink_sparkle.frag": "ecc85a2e95f5e9f53123dcaf8cb9b6ce", "assets/AssetManifest.bin": "b89ec2088d97f0e28e3dfeb4a81441b3", "assets/fonts/Poppins-Medium.ttf": "a4e11dda40531debd374e4c8b1dcc7f4", "assets/fonts/Fryo.ttf": "c6a2d26e4e379193e8c882fab063ca29", "assets/fonts/Pacifico.ttf": "6b6170fe52fb23f505b4e056fefd2679", "assets/fonts/Poppins-Regular.ttf": "731a28a413d642522667a2de8681ff35", "assets/fonts/MaterialIcons-Regular.otf": "90c23d578d19f1e4bd98ac8894ea751a", "assets/fonts/Poppins-Bold.ttf": "7940efc40d8e3b477e16cc41b0287139", "assets/assets/svg/empty_cart.svg": "87a6fa27b014a593d7f896c693f4e24f", "assets/assets/apple_pay.json": "518ae43bdd3b3b1466df5d5ac5ee225f", "assets/assets/images/simcity12.jpg": "ae3e562d129490cf73a187bb713e0d09", "assets/assets/images/empty_cart.png": "71d65f48565bdb8796519698385b947f", "assets/assets/images/inside.png": "c713b61e7a621fa81f5d25821c38401d", "assets/assets/images/pos_terminal2.jpg": "bfcf77e88e2db4b98376b4e4e64a582f", "assets/assets/images/girl_order2.jpg": "bf5c77c4712fcd8c0d1dccd25fe8c041", "assets/assets/images/delivery.png": "886081741088546e6a89da2f171783a3", "assets/assets/images/scan_qr.png": "57ff4f69790b64e77b65e93efe1e0895", "assets/assets/images/logo_dark_128.png": "48cd94873f3b85b4af8d75c20568ea42", "assets/assets/images/shopping.png": "e9cf3429187c6cc639ae0ae3d353c93f", "assets/assets/images/icon512.png": "a64d8ac033d9b206a039553926f2b8ef", "assets/assets/images/no_photo.png": "ddb7732a39d9ddd7e08338a9dd64cf9b", "assets/assets/images/logo_128.png": "97b24e91eb3fd84306dfc771175acf9f", "assets/assets/images/icon128.png": "d9987b95c33e67c6167b837d4acb3817", "assets/assets/images/delivery_man2.jpg": "a87f1ad36cc9610d5c78c97e58478998", "assets/assets/images/restorant2.jpg": "2272e31c91d2ad3a4416d9bca90664d6", "assets/assets/images/caffee2.jpg": "925e1a4b3e217d5c28cf5e3d155412ff", "assets/assets/images/map/2k_earth-day.jpg": "eec7a2f8c47c27b5c5904b484b717986", "assets/assets/images/map/2k_earth-night.jpg": "73d343be0ade106aedd0fb5942db72ba", "assets/assets/images/map/2k_stars.jpg": "aa84ebe0af724ac3a335285c2808971a", "assets/assets/images/girl3s.jpg": "06a918ed293a2630a66faa8420af2433", "assets/assets/images/logo_dark_256.png": "182d269a73f36198b558a2e7896b5a11", "assets/assets/images/no_companies_near2.jpg": "4bad67609d504d246827824b42e7dec4", "assets/assets/images/girl2s.jpg": "88261e9d099fde9a6a9173529639a323", "assets/assets/images/no_companies.png": "90be7f890c3202870c3e4795e5d0fb75", "assets/assets/images/greece2.jpg": "b33011c2ef75481636add94a7d35a06c", "assets/assets/images/icon256.png": "cf1a601cb859bc86db21e277cacc5900", "assets/assets/images/logo_256.png": "a7284c39dec9a27a2a0ad86372a6dc99", "assets/assets/images/village.jpg": "3ff593e165ce80b6738bfa8af3738c40", "assets/assets/images/delivery_island2.jpg": "e94de236c798d16f2fbab1c82badc206", "assets/assets/images/small_girl_order2.jpg": "512eb7568797362bd0bcdc40269619cd", "assets/assets/images/delivery_not_possible2.jpg": "b78bc081aa605ac03432cb817c2e150d", "assets/assets/images/scan_dark_qr.png": "aba0f127bbc206b12c819899508d4499", "assets/assets/images/takeaway.png": "99bc35f55034bc72b396dd823f8d5411", "assets/assets/images/simcity22.jpg": "296759dd7988dd16022df18f0bd97be1", "assets/assets/images/empty_cart2.png": "e342c5b68e4d0e19db250bfc15d85a29", "assets/assets/sounds/button.mp3": "79a495d709148e371220c1c413bc56c1", "assets/assets/sounds/balance.mp3": "a96c3724d646b84a825f701a05bcaa51", "assets/assets/sounds/error.mp3": "97fbc3d6c502d5ec8023b4a401694c22", "assets/assets/sounds/click.mp3": "b4d9b1b2c915c0ec523a40f18d525b66", "assets/assets/sounds/sonar.mp3": "f180db59e4f955452ebb7965081ab0fb", "assets/assets/sounds/info5.mp3": "452f5187078d776068dfcb70f99e244c", "assets/assets/sounds/login2.mp3": "d885990bbd8bd95ed3fea2469ccc2b65", "assets/assets/sounds/shutdown.mp3": "865de053a59bee9e375678257db1541c", "assets/assets/sounds/info4.mp3": "dda838d8d530058e508dac1b4418031a", "assets/assets/sounds/call.mp3": "ea3daf9be8f8b2d831de030d87aae0ca", "assets/assets/sounds/info3.mp3": "7d2cf568ca28fa8af391bec9a79c014f", "assets/assets/sounds/info2.mp3": "9b1ccabe706a658699022048bcf02197", "assets/assets/sounds/click3.mp3": "5beda9aa4584b85940b33bd0da5bb0e7", "assets/assets/sounds/click2.mp3": "53bb31d3db79bd59dca6c108dc0712d7", "assets/assets/sounds/beep.mp3": "bdbaa160fdf06d628471a2a97d2b8623", "assets/assets/sounds/cosmo_alert.mp3": "781e465c8ff9acde11278f4286eacf56", "assets/assets/sounds/beep3.mp3": "091985266bf9a6a055c9f473ba01c9ce", "assets/assets/sounds/login.mp3": "9390c23fd5b5b7f2a8db779fcfb89715", "assets/assets/sounds/bell.mp3": "e4b275385a1ba736c8301cee9dc1acac", "assets/assets/sounds/info.mp3": "79e4cc64d4d2466aae6131684582b01a", "assets/assets/sounds/error2.mp3": "25b0e6b3314ffcb1d13d75651d95bd64", "assets/assets/sounds/bell2.mp3": "513ca4b025ded4960c37e2411ca7567e", "assets/assets/sounds/sonar2.mp3": "b2995c815ab5c2ad5fcb326d6c1ecc84", "assets/assets/sounds/bike_alert.mp3": "37f7c30ef011dd14dcd94e1f40738291", "assets/assets/sounds/lift_alert.mp3": "152192f92be43bfd8f9d2ec9a69d7902", "assets/assets/google_pay.json": "d844647ca4b41170b4631131cd4857d1", "assets/assets/lottie/ok.json": "d5f782390a29704806961a7013870025", "assets/assets/lottie/search_point.json": "71986760b6ddd616782998c4f251dcb3", "assets/assets/lottie/cart.json": "54ae87c05561725ee6566a706dcb875d", "assets/assets/lottie/search.json": "c1019837d0bfa510870180c983890b9a", "assets/assets/lottie/delivery.json": "a60647bc9a41763c7ae2efc01f731d69", "assets/assets/lottie/planet_route.json": "2db2a404b8af14ede8017a7613b8bc4f", "assets/assets/lottie/globe_point.json": "f74c2b6477a1b5bfe0ba334931061e8a", "assets/assets/lottie/orders.json": "54844a70ef95980c159b81fdb63016a4", "assets/assets/lottie/thanks.json": "b73824ecb6da7567a2efcf112783f814", "assets/assets/lottie/loading_bubbles.json": "1e792e00ff1b1656ae192bb0c81291cd", "assets/assets/lottie/route.json": "ab8acee642bed6071a3d37bcef21cac5", "assets/assets/lottie/graph.json": "3a7f31199557a098af57d83a5af26b9c", "assets/assets/lottie/shopping.json": "7d9db972ffe2b369ac15ebf13a4e4876", "assets/assets/lottie/star.json": "ebbc4c2d3413449618af17cc71c16ed8", "assets/assets/lottie/favorite.json": "478d9086086c246ee703503787f40f80", "assets/assets/lottie/phone_point.json": "a704fb343fd81805619cf39718758465", "assets/assets/lottie/map.json": "9a9bd4355eaaa3c47d2ef7c503a64913", "assets/assets/lottie/on_map.json": "12b5d833c44d9b80243c7212291f1c24", "assets/assets/lottie/cancel.json": "2554839613f27dd8a94e9381315d637a", "assets/assets/icon/info.png": "a0f915cc930423857cee1e1a1002db4c", "assets/assets/icon/apple2.png": "acab4cc6037be668b1d2815a66fe86a1", "assets/assets/icon/plus.png": "b37f80f9b4990541e8570422a4ba6989", "assets/assets/icon/plus2.png": "b37f80f9b4990541e8570422a4ba6989", "assets/assets/icon/category.png": "b568275600c6d92f55fbddf3122d3278", "assets/assets/icon/marker_qr.png": "79f7c7304c09771a8a679510b6445d0c", "assets/assets/icon/gear2.png": "ad5522404662e2725d83528924f7d753", "assets/assets/icon/marker_tracking.png": "da41a26862de9f1b148ac3c258258ff8", "assets/assets/icon/wallet.png": "c1f6dc184b09e05e84e5c915442b253c", "assets/assets/icon/circle_blue.png": "c25b1dde1e105721850843b7b28e741c", "assets/assets/icon/satellite.png": "1652c45b2314a7491ad958c18f18f477", "assets/assets/icon/ok.png": "3b69c3c5d935bf338f862c6474a54907", "assets/assets/icon/cart2.png": "ee5502d2334f074d5a398139973727df", "assets/assets/icon/flags/el_3d.png": "948fbdd3bf264e989fdc05723f7447d0", "assets/assets/icon/flags/uk_3d.png": "82cc8854fbf00b554ffe557f78c073d4", "assets/assets/icon/flags/el.png": "7374f9252683d03836d501a2709bd213", "assets/assets/icon/flags/kk_3d.png": "a096a143e97b404af77ba6d0d849e383", "assets/assets/icon/flags/ru.png": "0488e8a8dc452f5a9befe686d23a35ad", "assets/assets/icon/flags/kk.png": "8ba8310122b5ddaa9ff260bb5edb4683", "assets/assets/icon/flags/uk.png": "17ef93f071b5a9d1960b776790ecea0b", "assets/assets/icon/flags/ru_3d.png": "2d2d7d60ec9d06702b89d5513ea80602", "assets/assets/icon/cart.png": "42e00085be5d258f9aeee54485f2400c", "assets/assets/icon/cart3.png": "096b3ea38e03ed4ac938b29b1901d4f2", "assets/assets/icon/settings.png": "1d6c3d95a04fca4e286207604342e406", "assets/assets/icon/bills.png": "b469f741aa03c5025369fe7e6f592be0", "assets/assets/icon/map_marker.png": "b866f218ebbf969cb44d56867f47fc27", "assets/assets/icon/circle_red.png": "5398068fa39ab878cc6d760ea6027601", "assets/assets/icon/marker2.png": "6b0a285ef58bf0e5bba54a73e5540a85", "assets/assets/icon/lock.png": "f1147ba3bd947f9fcea6e307c7410b46", "assets/assets/icon/delivery.png": "86409ba45ca563f124222bf2a77a5386", "assets/assets/icon/marker_region.png": "0ee78193039fce9b98bc4faf52284d56", "assets/assets/icon/wallet2.png": "45a4fce364f05ef60f9db166749deafc", "assets/assets/icon/forward2.png": "8b22b95f90506dd2e5b9c61b67a1d321", "assets/assets/icon/icon_256.png": "a7284c39dec9a27a2a0ad86372a6dc99", "assets/assets/icon/marker_new.png": "602242e9f48f30598e43391405648916", "assets/assets/icon/green_circle.png": "4a754e1d972962cb8ab814879a4cd267", "assets/assets/icon/circle_black.png": "1978ece8c22afccb7273f26bb9413c9c", "assets/assets/icon/red_circle.png": "5398068fa39ab878cc6d760ea6027601", "assets/assets/icon/in_transit.png": "3a9bd6ab69586695880eb3b1061c79d6", "assets/assets/icon/user.png": "f79a614bda915806580117dd7ee332bd", "assets/assets/icon/list_0.png": "d4880bf6ea2ef6fdc56760b636a43376", "assets/assets/icon/no_photo.png": "ddb7732a39d9ddd7e08338a9dd64cf9b", "assets/assets/icon/list_1.png": "98260ebfc93435590edc0943face5801", "assets/assets/icon/offline.png": "171370242dc77f356d741e20305cec30", "assets/assets/icon/marker_visit2.png": "4b154dfec32e4e7bbd722c4ad108dc7c", "assets/assets/icon/hot2.png": "71012ec9a3c8552b5f042a11fc5ef7c6", "assets/assets/icon/save2.png": "5ceb9ecc76bf5ba414c496f8d28ef179", "assets/assets/icon/list_2.png": "d38c1a058612c578febf683b3722d1a6", "assets/assets/icon/category_up.png": "1f23b86bc6f2b7c3004be4ed3b70e3a0", "assets/assets/icon/moon.png": "d3646fabd8945492c9a5252113510a36", "assets/assets/icon/waiter.png": "1696708ecb27eb5d97338f8895382176", "assets/assets/icon/deliver_food.png": "31470cf3fc75e3a4784049556607d586", "assets/assets/icon/users.png": "d8fc3523f90fbd2c1cf931fb2162fcdd", "assets/assets/icon/basket.png": "8ad16121bc53495f67078504b3b3cf41", "assets/assets/icon/shutdown.png": "4602a773c4b703c0045e976663cacfac", "assets/assets/icon/minus.png": "a798dff9943fb9b29ab4dda425e4f365", "assets/assets/icon/product_group.png": "f5704e4682a1085718523f2d248e1838", "assets/assets/icon/apple.png": "2088c87724d0414dea1e49a8091b5ce0", "assets/assets/icon/graph.png": "bbe4df794f9e5a4a64a4bfd1292b6c83", "assets/assets/icon/menu.png": "d38c1a058612c578febf683b3722d1a6", "assets/assets/icon/company.png": "82746c35176ed92d2e893122df779d0e", "assets/assets/icon/qr_code2.png": "b502f53d98c50884937a23a851b25542", "assets/assets/icon/forward.png": "789aa09537c1d18830644420e33a92fe", "assets/assets/icon/favorite_empty.png": "34d3a99bfad696b866c63996ba139a57", "assets/assets/icon/center_point.png": "2d6ec3e418f3ef0ad1dc45b4dcaddef2", "assets/assets/icon/trash2.png": "9fa129707c2b857d784d53e5d8857f51", "assets/assets/icon/medal.png": "9603377ecf5d9b2cc9592bc9028d88e5", "assets/assets/icon/trash3.png": "b17801f487a427e4ed35b79fa967d328", "assets/assets/icon/circle_green.png": "4a754e1d972962cb8ab814879a4cd267", "assets/assets/icon/qr_code.png": "f434e34a2608990b574aca6e40663871", "assets/assets/icon/waiter/wifi.png": "441f8c9061bdbb5cd57a2732c8a157b6", "assets/assets/icon/waiter/my_orders.png": "9ce595fdd23466c590dea2afb8011541", "assets/assets/icon/waiter/alarm.png": "33d9fe7c6487211435a2e4db42d6da32", "assets/assets/icon/waiter/qr_code.png": "5ee976e3eea7213493e8b7b0126d4522", "assets/assets/icon/waiter/rooms.png": "65cfcf520da80c2a5bd704677cd4d356", "assets/assets/icon/waiter/orders.png": "1696708ecb27eb5d97338f8895382176", "assets/assets/icon/marker_visit.png": "1f0ebf95bdf518effafa6b8b47da66ac", "assets/assets/icon/icon_dark_256.png": "182d269a73f36198b558a2e7896b5a11", "assets/assets/icon/star_empty.png": "96746bb9459c6a25523940d0cae1fdc3", "assets/assets/icon/center_pin_new.png": "618a170362d53be4254f5815856eec12", "assets/assets/icon/delete.png": "0786f287cbc00a2c5e26d614166582eb", "assets/assets/icon/exit.png": "4602a773c4b703c0045e976663cacfac", "assets/assets/icon/products.png": "4c5f6f46a67d30349c827362c9f1b45c", "assets/assets/icon/center_pin.png": "bae2c28d4617c7e5db4b1b3620d85c71", "assets/assets/icon/topic.png": "4a3ff2cde3ee56e3a725d2fce894422a", "assets/assets/icon/online.png": "0a6f85f899564c590fc70fae19043ec0", "assets/assets/icon/marker_home.png": "ea9b23e3f3d3b477c06f80b34b5f1fee", "assets/assets/icon/locate.png": "7daf3d15d343983e1d59958aac465c83", "assets/assets/icon/edit.png": "20bfad6316d6c544223556329149bcb1", "assets/assets/icon/star.png": "65194e0dbaa0ab32a38b6478665fb4b1", "assets/assets/icon/marker_home2.png": "923d853be439b2ff0c418f81a51e84d7", "assets/assets/icon/sun.png": "719856e669efd6a4d71aa4d9526ac882", "assets/assets/icon/trash.png": "fd6ccf07ce30fbbfc3363ae80279d03f", "assets/assets/icon/forward_button.png": "5c87a4a3669829ca573a5219acdf54c0", "assets/assets/icon/google.png": "e4990471161040f3f1f2b3de2fcb16fe", "assets/assets/icon/bill.png": "b81676be61b8306bb81137fb2e8de40f", "assets/assets/icon/marker_h.png": "d97d9c8aa2af04f4e493ffa4a98031bf", "assets/assets/icon/edit_pin.png": "3124368d11c988735099e36500330681", "assets/assets/icon/back.png": "97662601e7d50bd4f1aba81fc3db0050", "assets/assets/icon/favorite.png": "fb01b3d77477793fe6971a61a23b0877", "assets/assets/icon/save.png": "ed5dd82b1235dad26728264afe68e0ba", "assets/assets/icon/takeaway.png": "7a252c05f2c14ce2426537e5548b18a9", "assets/assets/icon/marker.png": "27bea29e5ed1ec57512c48551c880581", "assets/assets/icon/product_type.png": "bd67c0638546e2b5f201e789dedb006c", "canvaskit/skwasm_st.js": "d1326ceef381ad382ab492ba5d96f04d", "canvaskit/skwasm.js": "f2ad9363618c5f62e813740099a80e63", "canvaskit/skwasm.js.symbols": "80806576fa1056b43dd6d0b445b4b6f7", "canvaskit/canvaskit.js.symbols": "68eb703b9a609baef8ee0e413b442f33", "canvaskit/skwasm.wasm": "f0dfd99007f989368db17c9abeed5a49", "canvaskit/chromium/canvaskit.js.symbols": "5a23598a2a8efd18ec3b60de5d28af8f", "canvaskit/chromium/canvaskit.js": "34beda9f39eb7d992d46125ca868dc61", "canvaskit/chromium/canvaskit.wasm": "64a386c87532ae52ae041d18a32a3635", "canvaskit/skwasm_st.js.symbols": "c7e7aac7cd8b612defd62b43e3050bdd", "canvaskit/canvaskit.js": "86e461cf471c1640fd2b461ece4589df", "canvaskit/canvaskit.wasm": "efeeba7dcc952dae57870d4df3111fad", "canvaskit/skwasm_st.wasm": "56c3973560dfcbf28ce47cebe40f3206"}; // The application shell files that are downloaded before a service worker can // start. const CORE = ["main.dart.js", "index.html", "flutter_bootstrap.js", "assets/AssetManifest.bin.json", "assets/FontManifest.json"]; // During install, the TEMP cache is populated with the application shell files. self.addEventListener("install", (event) => { self.skipWaiting(); return event.waitUntil( caches.open(TEMP).then((cache) => { return cache.addAll( CORE.map((value) => new Request(value, {'cache': 'reload'}))); }) ); }); // During activate, the cache is populated with the temp files downloaded in // install. If this service worker is upgrading from one with a saved // MANIFEST, then use this to retain unchanged resource files. self.addEventListener("activate", function(event) { return event.waitUntil(async function() { try { var contentCache = await caches.open(CACHE_NAME); var tempCache = await caches.open(TEMP); var manifestCache = await caches.open(MANIFEST); var manifest = await manifestCache.match('manifest'); // When there is no prior manifest, clear the entire cache. if (!manifest) { await caches.delete(CACHE_NAME); contentCache = await caches.open(CACHE_NAME); for (var request of await tempCache.keys()) { var response = await tempCache.match(request); await contentCache.put(request, response); } await caches.delete(TEMP); // Save the manifest to make future upgrades efficient. await manifestCache.put('manifest', new Response(JSON.stringify(RESOURCES))); // Claim client to enable caching on first launch self.clients.claim(); return; } var oldManifest = await manifest.json(); var origin = self.location.origin; for (var request of await contentCache.keys()) { var key = request.url.substring(origin.length + 1); if (key == "") { key = "/"; } // If a resource from the old manifest is not in the new cache, or if // the MD5 sum has changed, delete it. Otherwise the resource is left // in the cache and can be reused by the new service worker. if (!RESOURCES[key] || RESOURCES[key] != oldManifest[key]) { await contentCache.delete(request); } } // Populate the cache with the app shell TEMP files, potentially overwriting // cache files preserved above. for (var request of await tempCache.keys()) { var response = await tempCache.match(request); await contentCache.put(request, response); } await caches.delete(TEMP); // Save the manifest to make future upgrades efficient. await manifestCache.put('manifest', new Response(JSON.stringify(RESOURCES))); // Claim client to enable caching on first launch self.clients.claim(); return; } catch (err) { // On an unhandled exception the state of the cache cannot be guaranteed. console.error('Failed to upgrade service worker: ' + err); await caches.delete(CACHE_NAME); await caches.delete(TEMP); await caches.delete(MANIFEST); } }()); }); // The fetch handler redirects requests for RESOURCE files to the service // worker cache. self.addEventListener("fetch", (event) => { if (event.request.method !== 'GET') { return; } var origin = self.location.origin; var key = event.request.url.substring(origin.length + 1); // Redirect URLs to the index.html if (key.indexOf('?v=') != -1) { key = key.split('?v=')[0]; } if (event.request.url == origin || event.request.url.startsWith(origin + '/#') || key == '') { key = '/'; } // If the URL is not the RESOURCE list then return to signal that the // browser should take over. if (!RESOURCES[key]) { return; } // If the URL is the index.html, perform an online-first request. if (key == '/') { return onlineFirst(event); } event.respondWith(caches.open(CACHE_NAME) .then((cache) => { return cache.match(event.request).then((response) => { // Either respond with the cached resource, or perform a fetch and // lazily populate the cache only if the resource was successfully fetched. return response || fetch(event.request).then((response) => { if (response && Boolean(response.ok)) { cache.put(event.request, response.clone()); } return response; }); }) }) ); }); self.addEventListener('message', (event) => { // SkipWaiting can be used to immediately activate a waiting service worker. // This will also require a page refresh triggered by the main worker. if (event.data === 'skipWaiting') { self.skipWaiting(); return; } if (event.data === 'downloadOffline') { downloadOffline(); return; } }); // Download offline will check the RESOURCES for all files not in the cache // and populate them. async function downloadOffline() { var resources = []; var contentCache = await caches.open(CACHE_NAME); var currentContent = {}; for (var request of await contentCache.keys()) { var key = request.url.substring(origin.length + 1); if (key == "") { key = "/"; } currentContent[key] = true; } for (var resourceKey of Object.keys(RESOURCES)) { if (!currentContent[resourceKey]) { resources.push(resourceKey); } } return contentCache.addAll(resources); } // Attempt to download the resource online before falling back to // the offline cache. function onlineFirst(event) { return event.respondWith( fetch(event.request).then((response) => { return caches.open(CACHE_NAME).then((cache) => { cache.put(event.request, response.clone()); return response; }); }).catch((error) => { return caches.open(CACHE_NAME).then((cache) => { return cache.match(event.request).then((response) => { if (response != null) { return response; } throw error; }); }); }) ); }