Merge branch 'feld-varnish' into 'develop'
[akkoma] / priv / static / sw.js
1 var __wpo = {"assets":{"main":["/packs/base_polyfills.js","/packs/extra_polyfills.js","/packs/features/compose.js","/packs/modals/onboarding_modal.js","/packs/emoji_picker.js","/packs/features/notifications.js","/packs/features/account_timeline.js","/packs/features/home_timeline.js","/packs/features/public_timeline.js","/packs/features/community_timeline.js","/packs/features/favourited_statuses.js","/packs/features/list_timeline.js","/packs/features/following.js","/packs/features/followers.js","/packs/features/hashtag_timeline.js","/packs/features/status.js","/packs/features/account_gallery.js","/packs/features/blocks.js","/packs/features/follow_requests.js","/packs/features/reblogs.js","/packs/features/favourites.js","/packs/features/getting_started.js","/packs/features/keyboard_shortcuts.js","/packs/features/generic_not_found.js","/packs/features/list_editor.js","/packs/status/media_gallery.js","/packs/share.js","/packs/application.js","/packs/about.js","/packs/public.js","/packs/mailer.js","/packs/default.js","/packs/admin.js","/packs/common.js","/packs/common.css","/packs/mailer.css","/packs/default.css","/packs/manifest.json"],"additional":["/emoji/1f602.svg","/emoji/sheet.png"],"optional":["/packs/locale_zh-TW.js","/packs/locale_zh-HK.js","/packs/locale_zh-CN.js","/packs/locale_uk.js","/packs/locale_tr.js","/packs/locale_th.js","/packs/locale_sv.js","/packs/locale_sr.js","/packs/locale_sr-Latn.js","/packs/locale_sk.js","/packs/locale_ru.js","/packs/locale_pt.js","/packs/locale_pt-BR.js","/packs/locale_pl.js","/packs/locale_oc.js","/packs/locale_no.js","/packs/locale_nl.js","/packs/locale_ko.js","/packs/locale_ja.js","/packs/locale_it.js","/packs/locale_io.js","/packs/locale_id.js","/packs/locale_hy.js","/packs/locale_hu.js","/packs/locale_hr.js","/packs/locale_he.js","/packs/locale_gl.js","/packs/locale_fr.js","/packs/locale_fi.js","/packs/locale_fa.js","/packs/locale_es.js","/packs/locale_eo.js","/packs/locale_en.js","/packs/locale_de.js","/packs/locale_ca.js","/packs/locale_bg.js","/packs/locale_ar.js","/packs/roboto-italic-webfont-50efdad8c62f5f279e3f4f1f63a4f9bc.woff2","/packs/roboto-bold-webfont-f633cb5c651ba4d50791e1adf55d3c18.woff2","/packs/roboto-medium-webfont-69c55fc2fe77d38934ea98dc31642ce6.woff2","/packs/roboto-regular-webfont-3ec24f953ed5e859a6402cb3c030ea8b.woff2","/packs/fontawesome-webfont-af7ae505a9eed503f8b8e6982036873e.woff2","/packs/robotomono-regular-webfont-6c1ce30b90ee993b22618ec489585594.woff2","/packs/Montserrat-Regular-080422d4c1328f3407818d25c86cce51.woff2","/packs/void-65dfe5bd31335a5b308d36964d320574.png","/packs/reticle-7d7ce959271e5ff1193fb32cff90ea56.png","/packs/elephant-fren-d16fd77f9a9387e7d146b5f9d4dc1e7f.png","/packs/icon_cached-98a757f1d9e93652742be43c22f46287.png","/packs/icon_done-12b87c12f915597dccbd2ca4d7167ba4.png","/packs/icon_email-738c89662d6640f5e6539151023d049a.png","/packs/icon_file_download-e5c29678f3a639e1e62374911d85e1d0.png","/packs/icon_grade-3ec67253b37908d2ab783f7225f20682.png","/packs/icon_lock_open-0bfd71a52eb3f34934edd59088b559fb.png","/packs/icon_person_add-e2c6b660f6e1c95785d8d2bfa7a823af.png","/packs/icon_reply-4f6ada7a0b886b084706a484753a0ff0.png","/packs/logo_full-5c51cffe1fcb8225ae02400d6a7e7077.png","/packs/logo_transparent-6f79eeb2c38ec2d12ed4d978322457d6.png","/packs/preview-9a17d32fc48369e8ccd910a75260e67d.jpg","/packs/elephant_ui_plane-e3f2d57c12c376e189c274cbe81af8dd.svg","/packs/elephant_ui_disappointed-8864342480c3612e3061702851d3a798.svg","/packs/elephant_ui_greeting-475430963d0b00fe82b07b17857ebf6c.svg","/packs/elephant_ui_working-2e653cc278c2ac871c23aeb10de1c0e2.svg","/packs/icon_cached-108e30d96e1d5152be7fe2978bcdfe14.svg","/packs/icon_done-dba357bfbba455428787fefc655ce120.svg","/packs/icon_email-1346985c7aaceb601b0d4257133254f4.svg","/packs/icon_file_download-4b5c054e76b0df3cbbc851854cd10c3c.svg","/packs/icon_grade-8e81b8e88c2b5834347a2a226c65d440.svg","/packs/icon_lock_open-c9627928caaaa505ac7de2a64bd065ec.svg","/packs/icon_person_add-5c56ef10b9e99e77a44d89041f4b77b5.svg","/packs/icon_reply-b5e28e1fe6acd4ec003e643e947f1c4a.svg","/packs/logo-fe5141d38a25f50068b4c69b77ca1ec8.svg","/packs/logo_alt-6090911445f54a587465e41da77a6969.svg","/packs/logo_full-96e7a97fe469f75a23a74852b2478fa3.svg","/packs/logo_transparent-6900bab180aa3a46c34425e5367a218f.svg"]},"externals":["/emoji/1f602.svg","/emoji/sheet.png"],"hashesMap":{"8aadd54157395376ea8c22827bde88e67f31358e":"/packs/roboto-italic-webfont-50efdad8c62f5f279e3f4f1f63a4f9bc.woff2","e2fc71044647b6edf7a3ba41429d5d626e63710a":"/packs/roboto-bold-webfont-f633cb5c651ba4d50791e1adf55d3c18.woff2","b66f9a200f8671202198f0238b4729e127bc0dac":"/packs/roboto-medium-webfont-69c55fc2fe77d38934ea98dc31642ce6.woff2","74f352b40a57789750d3c738c710a82cdb0f254a":"/packs/roboto-regular-webfont-3ec24f953ed5e859a6402cb3c030ea8b.woff2","d6f48cba7d076fb6f2fd6ba993a75b9dc1ecbf0c":"/packs/fontawesome-webfont-af7ae505a9eed503f8b8e6982036873e.woff2","1e149b7d5f1c5a5c4971cb523450118b1d50ed47":"/packs/robotomono-regular-webfont-6c1ce30b90ee993b22618ec489585594.woff2","c6aade94b414951dc75e41b6f30fc1fa93bf89fb":"/packs/Montserrat-Regular-080422d4c1328f3407818d25c86cce51.woff2","7e2065071fefe6d54f64b821bf575a0ab49b92c0":"/packs/void-65dfe5bd31335a5b308d36964d320574.png","f7e7808e34f32df8859ac9cef991858df4fc0bba":"/packs/reticle-7d7ce959271e5ff1193fb32cff90ea56.png","8523aa7b16b029770170cc12026e7c7d172d626d":"/packs/elephant_ui_plane-e3f2d57c12c376e189c274cbe81af8dd.svg","027d2ab934afd67b404426234750c08b516ec223":"/packs/elephant-fren-d16fd77f9a9387e7d146b5f9d4dc1e7f.png","2523b7002bda93c12af3b4b7f4d7a35fd52faf41":"/packs/elephant_ui_disappointed-8864342480c3612e3061702851d3a798.svg","2dace1e38e0d159660c56d838ad2ce22c0184661":"/packs/elephant_ui_greeting-475430963d0b00fe82b07b17857ebf6c.svg","42a8fc2f0526540979583534ec331a2d28d2575e":"/packs/elephant_ui_working-2e653cc278c2ac871c23aeb10de1c0e2.svg","22fac75a796b2bd2c6872cbd8d14bd325b00bb64":"/packs/icon_cached-108e30d96e1d5152be7fe2978bcdfe14.svg","e9cea6fd6e8034f60e0358a15956490831c66b03":"/packs/icon_done-dba357bfbba455428787fefc655ce120.svg","17604ec5d343bc1aee070a2197dae8fd78bdccef":"/packs/icon_email-1346985c7aaceb601b0d4257133254f4.svg","e4a88b85b09c072041e89acaa22ec362ece97f27":"/packs/icon_file_download-4b5c054e76b0df3cbbc851854cd10c3c.svg","75a26256446662fb331fd42b9849dfff235364d5":"/packs/icon_grade-8e81b8e88c2b5834347a2a226c65d440.svg","7a534f4811adb70a796a285fb70b93c87a9f4b94":"/packs/icon_lock_open-c9627928caaaa505ac7de2a64bd065ec.svg","08ef53f9228b3d24f2801ba942fc842599c39e34":"/packs/icon_person_add-5c56ef10b9e99e77a44d89041f4b77b5.svg","ad9a0479341f3a93a83c7cadab091569e459076c":"/packs/icon_reply-b5e28e1fe6acd4ec003e643e947f1c4a.svg","aa75bce521938954706802c15e393ea05663e5e0":"/packs/logo-fe5141d38a25f50068b4c69b77ca1ec8.svg","f573db9e5698b7a3541880875c3ce88fe03ebee2":"/packs/logo_alt-6090911445f54a587465e41da77a6969.svg","3b339fcffc64574bca7cd2521e25bfbea8c3cbbf":"/packs/logo_full-96e7a97fe469f75a23a74852b2478fa3.svg","12520e03b958c73d94a1f19644ca4d0b79c6505d":"/packs/logo_transparent-6900bab180aa3a46c34425e5367a218f.svg","dc0b5a8d2d7e67f84d37635137610c6c6d937058":"/packs/icon_cached-98a757f1d9e93652742be43c22f46287.png","58f810df15baa9109f9db7f800e31c0d011e6f0d":"/packs/icon_done-12b87c12f915597dccbd2ca4d7167ba4.png","828ed8086eacb6622609e9992950998ce0a1579b":"/packs/icon_email-738c89662d6640f5e6539151023d049a.png","c60492c5ceea92a0acb138f20e0a33dd1e553f6b":"/packs/icon_file_download-e5c29678f3a639e1e62374911d85e1d0.png","b60349291b7d31e9aa78b94aed0f6ce07171096f":"/packs/icon_grade-3ec67253b37908d2ab783f7225f20682.png","d80b4dd1135df4803cddc1c1f6646dd7fc601367":"/packs/icon_lock_open-0bfd71a52eb3f34934edd59088b559fb.png","3f2c7f54c1073569de3a7312fb9a055723f68898":"/packs/icon_person_add-e2c6b660f6e1c95785d8d2bfa7a823af.png","f7717ae34919e3c88a668b5d9426b5fdc868b0de":"/packs/icon_reply-4f6ada7a0b886b084706a484753a0ff0.png","ee2ae924bf02960749696f2c66890780ca321924":"/packs/logo_full-5c51cffe1fcb8225ae02400d6a7e7077.png","2a2ed7e6889f11e00656cb952d0704f762bf05ea":"/packs/logo_transparent-6f79eeb2c38ec2d12ed4d978322457d6.png","361cf83e570038228710feb587738d6b74308e26":"/packs/preview-9a17d32fc48369e8ccd910a75260e67d.jpg","735479ceb519ada5aee125ba574c85c215fd2ac5":"/packs/base_polyfills.js","f4c102539e1713d8b3166b4957ee2a9d7cbfe543":"/packs/extra_polyfills.js","6b26b5b4e14742528d39d5c69baa3e21290a1258":"/packs/features/compose.js","3be6f4f4c81ae89d477559f4ae3a05e2064ab253":"/packs/modals/onboarding_modal.js","97bbbd0fba777d7d88a4a5bc8e245a7a6861207b":"/packs/emoji_picker.js","10518b6f353d9f6ba2c087a578db2ce7d2d975e5":"/packs/features/notifications.js","d529e77e67b205a41653b0191e16c4149b19b0fb":"/packs/features/account_timeline.js","729c925434c0cb8469b14dd8ad42878e048c91a8":"/packs/features/home_timeline.js","f5f6d904e0cc0b6bb1f8ad0714f20bc5533260c8":"/packs/features/public_timeline.js","4ee3950929b78e2e124a0faeb8db637b554ff58c":"/packs/features/community_timeline.js","6898bb229e6adb6df5eab7ebecaa0461ef8511bb":"/packs/features/favourited_statuses.js","4cca8ac1df802d914c002e2cb048abfaebdc1530":"/packs/features/list_timeline.js","d60a1559a2a022c1a9065e461cbb498320f30e91":"/packs/features/following.js","4c82c4430bc97ac6ae0a85783486752761dd5ab1":"/packs/features/followers.js","0cb5916e1eb7c45a7977469f08fb5c4113a78b35":"/packs/features/hashtag_timeline.js","e72705aaa007fe13cd3890523a19ee2f434ff92f":"/packs/features/status.js","16e3593a7fac203b2b41b5a1a9d7d77b221bc734":"/packs/features/account_gallery.js","56f03533466a86db63b9dd6c9e8e1b56fd15cf05":"/packs/features/blocks.js","d7a2c3db0c8cf92e2da04b4724286d96d1117941":"/packs/features/follow_requests.js","a43b2a990a9e4618911789c92fa63b8b8ae3d051":"/packs/features/reblogs.js","f1903e506d49f6c6b504837f0da9d60a0e635b42":"/packs/features/favourites.js","882ded96f053bc32c1e4c26c879b8df0b4365c8a":"/packs/features/getting_started.js","6bf8d183c5e3943801bec1be6b9259eb6df83347":"/packs/features/keyboard_shortcuts.js","9cb7fa53486c69180fc05090fdade632406b3bb0":"/packs/features/generic_not_found.js","e59e196ac21bbf2ca727704d928fcda1ea275427":"/packs/features/list_editor.js","2c17d7d23aee17b52923f613267d055405502aea":"/packs/status/media_gallery.js","e473d2203f613d3551c830a8956e82cb4abe67c0":"/packs/share.js","5d59f1a727c67c9c54caf732fd9107b74a9d77fc":"/packs/application.js","f31b9062a584196a01aa23df62659eb7a311e80a":"/packs/about.js","baaaf139ce7f7c7b50798919d3ddd9b2b41a1c71":"/packs/public.js","e402078e69486c97d16e19a2350cad4d2ebacd4e":"/packs/locale_zh-TW.js","990045d7e496d7c20afa29b95bb57ce3a7233381":"/packs/locale_zh-HK.js","a351f524749530c54240a20b9d287f414ac1fc8f":"/packs/locale_zh-CN.js","a49b1cb687c9db73b917a9d927cafd1b1c3870ec":"/packs/locale_uk.js","1b34cb16a8c2d6eee4d4fc86dd2edd8a93c8a0a6":"/packs/locale_tr.js","cc1753b364aa7390dedc29504398e1fd8c23d8c6":"/packs/locale_th.js","8a22093161c324516acce1bd00c3ba5ac6c8b8f1":"/packs/locale_sv.js","08cb0789a22b4a4859ae4590a59fbbd4c628026e":"/packs/locale_sr.js","a3481ef4cecce5754d600e326c3dc33c12a0c001":"/packs/locale_sr-Latn.js","94531007d4da5d46a0a1dfb87149a05a35025133":"/packs/locale_sk.js","7cea8224e81b7f57c62aeed4f1ec4c16985ae879":"/packs/locale_ru.js","189eaf61b7a833d1222beae1fcf08660a97081bb":"/packs/locale_pt.js","3ed6633be74d664e812cf167d0b79237b346b8eb":"/packs/locale_pt-BR.js","b51a692a328af1eafe8433bf170da8aa963dbffa":"/packs/locale_pl.js","f95a47f22fe522ea9f19aea427eccdb92d668463":"/packs/locale_oc.js","f3a63e3a9b667af7b8aae6677cca9cd5fa544450":"/packs/locale_no.js","1617607a224891aca21dbd955f1d8d748073553c":"/packs/locale_nl.js","a678598ad80ef43bed05a11e60d6672489194d0f":"/packs/locale_ko.js","fa257a7b03017ad1976a1f6ea87df45cb5b2e6d5":"/packs/locale_ja.js","24efd78e64e34023d7fccc6ed6f9e4c9317f606d":"/packs/locale_it.js","eef1fb80c7e2d7d9d9a53fc2d2ab42c49e090973":"/packs/locale_io.js","668463bcf41ce8971dfc2e03b4760a5769608f9d":"/packs/locale_id.js","546038783532ad3a0a3d64c4f9fdec0fe274cb1b":"/packs/locale_hy.js","dcacf3d9c920b82b61e1c5c1e530b4cd89bf86d6":"/packs/locale_hu.js","e6ea9a0c39af19c23dd268dfa42d02f3ef6f5286":"/packs/locale_hr.js","d6f92ff2dc28b2b129db3b70a50916f429363d16":"/packs/locale_he.js","223fb275136e05f90330126a6c36a053c4105212":"/packs/locale_gl.js","da36e5346cec0627c1983cff4d6582ddfdea16d7":"/packs/locale_fr.js","5edfbae7843ae0deb08e842365e6b969c8e4319e":"/packs/locale_fi.js","3d548c85c7e290f736e69504a1380128c99b1527":"/packs/locale_fa.js","8eef75454b123fa84bcbd897bb0b76c8023b57c8":"/packs/locale_es.js","1b22c9a756bdf85cdf2cb24ce2bd957ab2016fcd":"/packs/locale_eo.js","76bf1c955e254301d6271e4a2d1b712d7544b2ef":"/packs/locale_en.js","36c9261b7bf3d23c4a7fe7da776a3f7c73f4cb24":"/packs/locale_de.js","37f324aeecf404d5a9054b8695680305a1e3dcc9":"/packs/locale_ca.js","60d0bb13db45157614defb53ea18733d1d2bfa02":"/packs/locale_bg.js","2002efc5f1696ad482041d03600eb8183fac5e77":"/packs/locale_ar.js","9c5b75dcad12d553d953dfa71e4a3913600ddd80":"/packs/mailer.js","bccfc356ca0d67eb35b045cd313996454ba2e9d5":"/packs/default.js","a216f9aa7a4fb009a2e0fccdb2d0e09b9c7e3368":"/packs/admin.js","d6f5c4c563cf631ce7f3285b3a62b66c217c80ae":"/packs/common.js","63d5949a7f9065ed25c771b22883444dc420be1d":"/packs/common.css","2a742852e4241f6de4f33884bf01731c08a3851d":"/packs/mailer.css","54d7becd9340e4e5137d8895d9e068ce7d463be7":"/packs/default.css","0663f076d7e4cce086fbebc8b2aa66d29e1123d9":"/packs/manifest.json"},"strategy":"changed","responseStrategy":"cache-first","version":"2018-4-2 18:30:13","name":"webpack-offline:mastodon","pluginVersion":"4.8.4","relativePaths":false};
2
3 /******/ (function(modules) { // webpackBootstrap
4 /******/ // The module cache
5 /******/ var installedModules = {};
6 /******/
7 /******/ // The require function
8 /******/ function __webpack_require__(moduleId) {
9 /******/
10 /******/ // Check if module is in cache
11 /******/ if(installedModules[moduleId]) {
12 /******/ return installedModules[moduleId].exports;
13 /******/ }
14 /******/ // Create a new module (and put it into the cache)
15 /******/ var module = installedModules[moduleId] = {
16 /******/ i: moduleId,
17 /******/ l: false,
18 /******/ exports: {}
19 /******/ };
20 /******/
21 /******/ // Execute the module function
22 /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
23 /******/
24 /******/ // Flag the module as loaded
25 /******/ module.l = true;
26 /******/
27 /******/ // Return the exports of the module
28 /******/ return module.exports;
29 /******/ }
30 /******/
31 /******/
32 /******/ // expose the modules object (__webpack_modules__)
33 /******/ __webpack_require__.m = modules;
34 /******/
35 /******/ // expose the module cache
36 /******/ __webpack_require__.c = installedModules;
37 /******/
38 /******/ // define getter function for harmony exports
39 /******/ __webpack_require__.d = function(exports, name, getter) {
40 /******/ if(!__webpack_require__.o(exports, name)) {
41 /******/ Object.defineProperty(exports, name, {
42 /******/ configurable: false,
43 /******/ enumerable: true,
44 /******/ get: getter
45 /******/ });
46 /******/ }
47 /******/ };
48 /******/
49 /******/ // getDefaultExport function for compatibility with non-harmony modules
50 /******/ __webpack_require__.n = function(module) {
51 /******/ var getter = module && module.__esModule ?
52 /******/ function getDefault() { return module['default']; } :
53 /******/ function getModuleExports() { return module; };
54 /******/ __webpack_require__.d(getter, 'a', getter);
55 /******/ return getter;
56 /******/ };
57 /******/
58 /******/ // Object.prototype.hasOwnProperty.call
59 /******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
60 /******/
61 /******/ // __webpack_public_path__
62 /******/ __webpack_require__.p = "/packs/";
63 /******/
64 /******/ // Load entry module and return exports
65 /******/ return __webpack_require__(__webpack_require__.s = 0);
66 /******/ })
67 /************************************************************************/
68 /******/ ([
69 /* 0 */
70 /***/ (function(module, exports, __webpack_require__) {
71
72 "use strict";
73
74
75 (function () {
76 var waitUntil = ExtendableEvent.prototype.waitUntil;
77 var respondWith = FetchEvent.prototype.respondWith;
78 var promisesMap = new WeakMap();
79
80 ExtendableEvent.prototype.waitUntil = function (promise) {
81 var extendableEvent = this;
82 var promises = promisesMap.get(extendableEvent);
83
84 if (promises) {
85 promises.push(Promise.resolve(promise));
86 return;
87 }
88
89 promises = [Promise.resolve(promise)];
90 promisesMap.set(extendableEvent, promises);
91
92 // call original method
93 return waitUntil.call(extendableEvent, Promise.resolve().then(function processPromises() {
94 var len = promises.length;
95
96 // wait for all to settle
97 return Promise.all(promises.map(function (p) {
98 return p["catch"](function () {});
99 })).then(function () {
100 // have new items been added? If so, wait again
101 if (promises.length != len) return processPromises();
102 // we're done!
103 promisesMap["delete"](extendableEvent);
104 // reject if one of the promises rejected
105 return Promise.all(promises);
106 });
107 }));
108 };
109
110 FetchEvent.prototype.respondWith = function (promise) {
111 this.waitUntil(promise);
112 return respondWith.call(this, promise);
113 };
114 })();;
115 'use strict';
116
117 if (typeof DEBUG === 'undefined') {
118 var DEBUG = false;
119 }
120
121 function WebpackServiceWorker(params, helpers) {
122 var loaders = helpers.loaders;
123 var cacheMaps = helpers.cacheMaps;
124
125 var strategy = params.strategy;
126 var responseStrategy = params.responseStrategy;
127
128 var assets = params.assets;
129 var loadersMap = params.loaders || {};
130
131 var hashesMap = params.hashesMap;
132 var externals = params.externals;
133
134 // Not used yet
135 // const alwaysRevalidate = params.alwaysRevalidate;
136 // const ignoreSearch = params.ignoreSearch;
137 // const preferOnline = params.preferOnline;
138
139 var CACHE_PREFIX = params.name;
140 var CACHE_TAG = params.version;
141 var CACHE_NAME = CACHE_PREFIX + ':' + CACHE_TAG;
142
143 var STORED_DATA_KEY = '__offline_webpack__data';
144
145 mapAssets();
146
147 var allAssets = [].concat(assets.main, assets.additional, assets.optional);
148 var navigateFallbackURL = params.navigateFallbackURL;
149 var navigateFallbackForRedirects = params.navigateFallbackForRedirects;
150
151 self.addEventListener('install', function (event) {
152 console.log('[SW]:', 'Install event');
153
154 var installing = undefined;
155
156 if (strategy === 'changed') {
157 installing = cacheChanged('main');
158 } else {
159 installing = cacheAssets('main');
160 }
161
162 event.waitUntil(installing);
163 });
164
165 self.addEventListener('activate', function (event) {
166 console.log('[SW]:', 'Activate event');
167
168 var activation = cacheAdditional();
169
170 // Delete all assets which name starts with CACHE_PREFIX and
171 // is not current cache (CACHE_NAME)
172 activation = activation.then(storeCacheData);
173 activation = activation.then(deleteObsolete);
174 activation = activation.then(function () {
175 if (self.clients && self.clients.claim) {
176 return self.clients.claim();
177 }
178 });
179
180 event.waitUntil(activation);
181 });
182
183 function cacheAdditional() {
184 if (!assets.additional.length) {
185 return Promise.resolve();
186 }
187
188 if (DEBUG) {
189 console.log('[SW]:', 'Caching additional');
190 }
191
192 var operation = undefined;
193
194 if (strategy === 'changed') {
195 operation = cacheChanged('additional');
196 } else {
197 operation = cacheAssets('additional');
198 }
199
200 // Ignore fail of `additional` cache section
201 return operation['catch'](function (e) {
202 console.error('[SW]:', 'Cache section `additional` failed to load');
203 });
204 }
205
206 function cacheAssets(section) {
207 var batch = assets[section];
208
209 return caches.open(CACHE_NAME).then(function (cache) {
210 return addAllNormalized(cache, batch, {
211 bust: params.version,
212 request: params.prefetchRequest
213 });
214 }).then(function () {
215 logGroup('Cached assets: ' + section, batch);
216 })['catch'](function (e) {
217 console.error(e);
218 throw e;
219 });
220 }
221
222 function cacheChanged(section) {
223 return getLastCache().then(function (args) {
224 if (!args) {
225 return cacheAssets(section);
226 }
227
228 var lastCache = args[0];
229 var lastKeys = args[1];
230 var lastData = args[2];
231
232 var lastMap = lastData.hashmap;
233 var lastVersion = lastData.version;
234
235 if (!lastData.hashmap || lastVersion === params.version) {
236 return cacheAssets(section);
237 }
238
239 var lastHashedAssets = Object.keys(lastMap).map(function (hash) {
240 return lastMap[hash];
241 });
242
243 var lastUrls = lastKeys.map(function (req) {
244 var url = new URL(req.url);
245 url.search = '';
246 url.hash = '';
247
248 return url.toString();
249 });
250
251 var sectionAssets = assets[section];
252 var moved = [];
253 var changed = sectionAssets.filter(function (url) {
254 if (lastUrls.indexOf(url) === -1 || lastHashedAssets.indexOf(url) === -1) {
255 return true;
256 }
257
258 return false;
259 });
260
261 Object.keys(hashesMap).forEach(function (hash) {
262 var asset = hashesMap[hash];
263
264 // Return if not in sectionAssets or in changed or moved array
265 if (sectionAssets.indexOf(asset) === -1 || changed.indexOf(asset) !== -1 || moved.indexOf(asset) !== -1) return;
266
267 var lastAsset = lastMap[hash];
268
269 if (lastAsset && lastUrls.indexOf(lastAsset) !== -1) {
270 moved.push([lastAsset, asset]);
271 } else {
272 changed.push(asset);
273 }
274 });
275
276 logGroup('Changed assets: ' + section, changed);
277 logGroup('Moved assets: ' + section, moved);
278
279 var movedResponses = Promise.all(moved.map(function (pair) {
280 return lastCache.match(pair[0]).then(function (response) {
281 return [pair[1], response];
282 });
283 }));
284
285 return caches.open(CACHE_NAME).then(function (cache) {
286 var move = movedResponses.then(function (responses) {
287 return Promise.all(responses.map(function (pair) {
288 return cache.put(pair[0], pair[1]);
289 }));
290 });
291
292 return Promise.all([move, addAllNormalized(cache, changed, {
293 bust: params.version,
294 request: params.prefetchRequest
295 })]);
296 });
297 });
298 }
299
300 function deleteObsolete() {
301 return caches.keys().then(function (keys) {
302 var all = keys.map(function (key) {
303 if (key.indexOf(CACHE_PREFIX) !== 0 || key.indexOf(CACHE_NAME) === 0) return;
304
305 console.log('[SW]:', 'Delete cache:', key);
306 return caches['delete'](key);
307 });
308
309 return Promise.all(all);
310 });
311 }
312
313 function getLastCache() {
314 return caches.keys().then(function (keys) {
315 var index = keys.length;
316 var key = undefined;
317
318 while (index--) {
319 key = keys[index];
320
321 if (key.indexOf(CACHE_PREFIX) === 0) {
322 break;
323 }
324 }
325
326 if (!key) return;
327
328 var cache = undefined;
329
330 return caches.open(key).then(function (_cache) {
331 cache = _cache;
332 return _cache.match(new URL(STORED_DATA_KEY, location).toString());
333 }).then(function (response) {
334 if (!response) return;
335
336 return Promise.all([cache, cache.keys(), response.json()]);
337 });
338 });
339 }
340
341 function storeCacheData() {
342 return caches.open(CACHE_NAME).then(function (cache) {
343 var data = new Response(JSON.stringify({
344 version: params.version,
345 hashmap: hashesMap
346 }));
347
348 return cache.put(new URL(STORED_DATA_KEY, location).toString(), data);
349 });
350 }
351
352 self.addEventListener('fetch', function (event) {
353 var url = new URL(event.request.url);
354 url.hash = '';
355
356 var urlString = url.toString();
357
358 // Not external, so search part of the URL should be stripped,
359 // if it's external URL, the search part should be kept
360 if (externals.indexOf(urlString) === -1) {
361 url.search = '';
362 urlString = url.toString();
363 }
364
365 // Handle only GET requests
366 var isGET = event.request.method === 'GET';
367 var assetMatches = allAssets.indexOf(urlString) !== -1;
368 var cacheUrl = urlString;
369
370 if (!assetMatches) {
371 var cacheRewrite = matchCacheMap(event.request);
372
373 if (cacheRewrite) {
374 cacheUrl = cacheRewrite;
375 assetMatches = true;
376 }
377 }
378
379 if (!assetMatches && isGET) {
380 // If isn't a cached asset and is a navigation request,
381 // fallback to navigateFallbackURL if available
382 if (navigateFallbackURL && isNavigateRequest(event.request)) {
383 event.respondWith(handleNavigateFallback(fetch(event.request)));
384
385 return;
386 }
387 }
388
389 if (!assetMatches || !isGET) {
390 // Fix for https://twitter.com/wanderview/status/696819243262873600
391 if (url.origin !== location.origin && navigator.userAgent.indexOf('Firefox/44.') !== -1) {
392 event.respondWith(fetch(event.request));
393 }
394
395 return;
396 }
397
398 // Logic of caching / fetching is here
399 // * urlString -- url to match from the CACHE_NAME
400 // * event.request -- original Request to perform fetch() if necessary
401 var resource = undefined;
402
403 if (responseStrategy === 'network-first') {
404 resource = networkFirstResponse(event, urlString, cacheUrl);
405 }
406 // 'cache-first'
407 // (responseStrategy has been validated before)
408 else {
409 resource = cacheFirstResponse(event, urlString, cacheUrl);
410 }
411
412 if (navigateFallbackURL && isNavigateRequest(event.request)) {
413 resource = handleNavigateFallback(resource);
414 }
415
416 event.respondWith(resource);
417 });
418
419 self.addEventListener('message', function (e) {
420 var data = e.data;
421 if (!data) return;
422
423 switch (data.action) {
424 case 'skipWaiting':
425 {
426 if (self.skipWaiting) self.skipWaiting();
427 }break;
428 }
429 });
430
431 function cacheFirstResponse(event, urlString, cacheUrl) {
432 return cachesMatch(cacheUrl, CACHE_NAME).then(function (response) {
433 if (response) {
434 if (DEBUG) {
435 console.log('[SW]:', 'URL [' + cacheUrl + '](' + urlString + ') from cache');
436 }
437
438 return response;
439 }
440
441 // Load and cache known assets
442 var fetching = fetch(event.request).then(function (response) {
443 if (!response.ok) {
444 if (DEBUG) {
445 console.log('[SW]:', 'URL [' + urlString + '] wrong response: [' + response.status + '] ' + response.type);
446 }
447
448 return response;
449 }
450
451 if (DEBUG) {
452 console.log('[SW]:', 'URL [' + urlString + '] from network');
453 }
454
455 if (cacheUrl === urlString) {
456 (function () {
457 var responseClone = response.clone();
458 var storing = caches.open(CACHE_NAME).then(function (cache) {
459 return cache.put(urlString, responseClone);
460 }).then(function () {
461 console.log('[SW]:', 'Cache asset: ' + urlString);
462 });
463
464 event.waitUntil(storing);
465 })();
466 }
467
468 return response;
469 });
470
471 return fetching;
472 });
473 }
474
475 function networkFirstResponse(event, urlString, cacheUrl) {
476 return fetch(event.request).then(function (response) {
477 if (response.ok) {
478 if (DEBUG) {
479 console.log('[SW]:', 'URL [' + urlString + '] from network');
480 }
481
482 return response;
483 }
484
485 // Throw to reach the code in the catch below
486 throw new Error('Response is not ok');
487 })
488 // This needs to be in a catch() and not just in the then() above
489 // cause if your network is down, the fetch() will throw
490 ['catch'](function () {
491 if (DEBUG) {
492 console.log('[SW]:', 'URL [' + urlString + '] from cache if possible');
493 }
494
495 return cachesMatch(cacheUrl, CACHE_NAME);
496 });
497 }
498
499 function handleNavigateFallback(fetching) {
500 return fetching['catch'](function () {}).then(function (response) {
501 var isOk = response && response.ok;
502 var isRedirect = response && response.type === 'opaqueredirect';
503
504 if (isOk || isRedirect && !navigateFallbackForRedirects) {
505 return response;
506 }
507
508 if (DEBUG) {
509 console.log('[SW]:', 'Loading navigation fallback [' + navigateFallbackURL + '] from cache');
510 }
511
512 return cachesMatch(navigateFallbackURL, CACHE_NAME);
513 });
514 }
515
516 function mapAssets() {
517 Object.keys(assets).forEach(function (key) {
518 assets[key] = assets[key].map(function (path) {
519 var url = new URL(path, location);
520
521 url.hash = '';
522
523 if (externals.indexOf(path) === -1) {
524 url.search = '';
525 }
526
527 return url.toString();
528 });
529 });
530
531 Object.keys(loadersMap).forEach(function (key) {
532 loadersMap[key] = loadersMap[key].map(function (path) {
533 var url = new URL(path, location);
534
535 url.hash = '';
536
537 if (externals.indexOf(path) === -1) {
538 url.search = '';
539 }
540
541 return url.toString();
542 });
543 });
544
545 hashesMap = Object.keys(hashesMap).reduce(function (result, hash) {
546 var url = new URL(hashesMap[hash], location);
547 url.search = '';
548 url.hash = '';
549
550 result[hash] = url.toString();
551 return result;
552 }, {});
553
554 externals = externals.map(function (path) {
555 var url = new URL(path, location);
556 url.hash = '';
557
558 return url.toString();
559 });
560 }
561
562 function addAllNormalized(cache, requests, options) {
563 var allowLoaders = options.allowLoaders !== false;
564 var bustValue = options && options.bust;
565 var requestInit = options.request || {
566 credentials: 'omit',
567 mode: 'cors'
568 };
569
570 return Promise.all(requests.map(function (request) {
571 if (bustValue) {
572 request = applyCacheBust(request, bustValue);
573 }
574
575 return fetch(request, requestInit).then(fixRedirectedResponse);
576 })).then(function (responses) {
577 if (responses.some(function (response) {
578 return !response.ok;
579 })) {
580 return Promise.reject(new Error('Wrong response status'));
581 }
582
583 var extracted = [];
584 var addAll = responses.map(function (response, i) {
585 if (allowLoaders) {
586 extracted.push(extractAssetsWithLoaders(requests[i], response));
587 }
588
589 return cache.put(requests[i], response);
590 });
591
592 if (extracted.length) {
593 (function () {
594 var newOptions = copyObject(options);
595 newOptions.allowLoaders = false;
596
597 var waitAll = addAll;
598
599 addAll = Promise.all(extracted).then(function (all) {
600 var extractedRequests = [].concat.apply([], all);
601
602 if (requests.length) {
603 waitAll = waitAll.concat(addAllNormalized(cache, extractedRequests, newOptions));
604 }
605
606 return Promise.all(waitAll);
607 });
608 })();
609 } else {
610 addAll = Promise.all(addAll);
611 }
612
613 return addAll;
614 });
615 }
616
617 function extractAssetsWithLoaders(request, response) {
618 var all = Object.keys(loadersMap).map(function (key) {
619 var loader = loadersMap[key];
620
621 if (loader.indexOf(request) !== -1 && loaders[key]) {
622 return loaders[key](response.clone());
623 }
624 }).filter(function (a) {
625 return !!a;
626 });
627
628 return Promise.all(all).then(function (all) {
629 return [].concat.apply([], all);
630 });
631 }
632
633 function matchCacheMap(request) {
634 var urlString = request.url;
635 var url = new URL(urlString);
636
637 var requestType = undefined;
638
639 if (request.mode === 'navigate') {
640 requestType = 'navigate';
641 } else if (url.origin === location.origin) {
642 requestType = 'same-origin';
643 } else {
644 requestType = 'cross-origin';
645 }
646
647 for (var i = 0; i < cacheMaps.length; i++) {
648 var map = cacheMaps[i];
649
650 if (!map) continue;
651 if (map.requestTypes && map.requestTypes.indexOf(requestType) === -1) {
652 continue;
653 }
654
655 var newString = undefined;
656
657 if (typeof map.match === 'function') {
658 newString = map.match(url, request);
659 } else {
660 newString = urlString.replace(map.match, map.to);
661 }
662
663 if (newString && newString !== urlString) {
664 return newString;
665 }
666 }
667 }
668 }
669
670 function cachesMatch(request, cacheName) {
671 return caches.match(request, {
672 cacheName: cacheName
673 }).then(function (response) {
674 if (isNotRedirectedResponse()) {
675 return response;
676 }
677
678 // Fix already cached redirected responses
679 return fixRedirectedResponse(response).then(function (fixedResponse) {
680 return caches.open(cacheName).then(function (cache) {
681 return cache.put(request, fixedResponse);
682 }).then(function () {
683 return fixedResponse;
684 });
685 });
686 })
687 // Return void if error happened (cache not found)
688 ['catch'](function () {});
689 }
690
691 function applyCacheBust(asset, key) {
692 var hasQuery = asset.indexOf('?') !== -1;
693 return asset + (hasQuery ? '&' : '?') + '__uncache=' + encodeURIComponent(key);
694 }
695
696 function getClientsURLs() {
697 if (!self.clients) {
698 return Promise.resolve([]);
699 }
700
701 return self.clients.matchAll({
702 includeUncontrolled: true
703 }).then(function (clients) {
704 if (!clients.length) return [];
705
706 var result = [];
707
708 clients.forEach(function (client) {
709 var url = new URL(client.url);
710 url.search = '';
711 url.hash = '';
712 var urlString = url.toString();
713
714 if (!result.length || result.indexOf(urlString) === -1) {
715 result.push(urlString);
716 }
717 });
718
719 return result;
720 });
721 }
722
723 function isNavigateRequest(request) {
724 return request.mode === 'navigate' || request.headers.get('Upgrade-Insecure-Requests') || (request.headers.get('Accept') || '').indexOf('text/html') !== -1;
725 }
726
727 function isNotRedirectedResponse(response) {
728 return !response || !response.redirected || !response.ok || response.type === 'opaqueredirect';
729 }
730
731 // Based on https://github.com/GoogleChrome/sw-precache/pull/241/files#diff-3ee9060dc7a312c6a822cac63a8c630bR85
732 function fixRedirectedResponse(response) {
733 if (isNotRedirectedResponse(response)) {
734 return Promise.resolve(response);
735 }
736
737 var body = 'body' in response ? Promise.resolve(response.body) : response.blob();
738
739 return body.then(function (data) {
740 return new Response(data, {
741 headers: response.headers,
742 status: response.status
743 });
744 });
745 }
746
747 function copyObject(original) {
748 return Object.keys(original).reduce(function (result, key) {
749 result[key] = original[key];
750 return result;
751 }, {});
752 }
753
754 function logGroup(title, assets) {
755 console.groupCollapsed('[SW]:', title);
756
757 assets.forEach(function (asset) {
758 console.log('Asset:', asset);
759 });
760
761 console.groupEnd();
762 }
763 WebpackServiceWorker(__wpo, {
764 loaders: {},
765 cacheMaps: [],
766 });
767 module.exports = __webpack_require__(1)
768
769
770 /***/ }),
771 /* 1 */
772 /***/ (function(module, __webpack_exports__, __webpack_require__) {
773
774 "use strict";
775 Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
776 /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__web_push_notifications__ = __webpack_require__(2);
777 /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__web_push_notifications___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0__web_push_notifications__);
778 /*** IMPORTS FROM imports-loader ***/
779 var process = (process || {});
780 process.env = {"GJS_DEBUG_TOPICS":"JS ERROR;JS LOG","npm_config_cache_lock_stale":"60000","npm_config_ham_it_up":"","npm_package_dependencies_mark_loader":"^0.1.6","npm_config_legacy_bundling":"","npm_config_sign_git_tag":"","USER":"howl","LANGUAGE":"en_GB:en","npm_package_dependencies_autoprefixer":"^7.1.6","npm_package_dependencies_mkdirp":"^0.5.1","npm_package_dependencies_node_sass":"^4.7.2","npm_package_devDependencies_jest":"^21.2.1","npm_config_user_agent":"npm/5.6.0 node/v9.10.1 linux x64","npm_config_always_auth":"","COMP_WORDBREAKS":" \t\n\"'><;|&(:","XDG_SEAT":"seat0","npm_package_dependencies_detect_passive_events":"^1.0.2","npm_package_dependencies_immutable":"^3.8.2","npm_package_bugs_url":"https://github.com/tootsuite/mastodon/issues","npm_config_bin_links":"true","npm_config_key":"","SSH_AGENT_PID":"1448","XDG_SESSION_TYPE":"x11","npm_package_dependencies_react_overlays":"^0.8.3","npm_config_allow_same_version":"","npm_config_description":"true","npm_config_fetch_retries":"2","npm_config_heading":"npm","npm_config_if_present":"","npm_config_init_version":"1.0.0","npm_config_user":"","npm_node_execpath":"/usr/bin/node","LD_LIBRARY_PATH":"/home/howl/torch-cl/install/lib:/home/howl/torch-cl/install/lib:","LUA_PATH":"/home/howl/.luarocks/share/lua/5.1/?.lua;/home/howl/.luarocks/share/lua/5.1/?/init.lua;/home/howl/torch-cl/install/share/lua/5.1/?.lua;/home/howl/torch-cl/install/share/lua/5.1/?/init.lua;./?.lua;/home/howl/torch-cl/install/share/luajit-2.1.0-beta1/?.lua;/usr/local/share/lua/5.1/?.lua;/usr/local/share/lua/5.1/?/init.lua","SHLVL":"2","npm_package_scripts_manage_translations":"node ./config/webpack/translationRunner.js","npm_package_dependencies_babel_plugin_transform_class_properties":"^6.24.1","npm_package_dependencies_babel_plugin_transform_es2015_modules_commonjs":"^6.24.1","npm_package_dependencies_escape_html":"^1.0.3","npm_package_dependencies_imports_loader":"^0.8.0","npm_package_optionalDependencies_node_zopfli":"^2.0.2","npm_config_prefer_online":"","OLDPWD":"/home/howl/oc/mastofe/public","HOME":"/home/howl","npm_package_dependencies_postcss_loader":"^2.0.9","npm_config_force":"","OSU_API_KEY":"e0146ddaf01d1e9d107afedcd340b42347186260","DESKTOP_SESSION":"cinnamon","npm_package_dependencies_react_redux_loading_bar":"^2.9.3","npm_package_dependencies_redis":"^2.7.1","npm_config_only":"","npm_config_read_only":"","GIO_LAUNCHED_DESKTOP_FILE":"/usr/share/applications/xfce4-terminal.desktop","npm_package_engines_node":">=6","npm_package_dependencies_babel_plugin_react_intl":"^2.3.1","npm_package_dependencies_npmlog":"^4.1.2","npm_package_devDependencies_enzyme_adapter_react_16":"^1.1.0","npm_config_cache_min":"10","npm_config_init_license":"ISC","GTK_MODULES":"gail:atk-bridge","XDG_SEAT_PATH":"/org/freedesktop/DisplayManager/Seat0","npm_package_scripts_build_production":"cross-env NODE_ENV=production webpack --config config/webpack/production.js","npm_package_dependencies_glob":"^7.1.1","npm_package_dependencies_webpack_merge":"^4.1.1","npm_config_editor":"vi","npm_config_rollback":"true","npm_config_tag_version_prefix":"v","OSU_PASSWORD":"il mio cane gioca meglio di me","npm_package_dependencies_redux_thunk":"^2.2.0","npm_package_dependencies_webpack":"^3.9.1","npm_config_cache_max":"Infinity","npm_config_timing":"","npm_config_userconfig":"/home/howl/.npmrc","DBUS_SESSION_BUS_ADDRESS":"unix:path=/run/user/1000/bus","CINNAMON_VERSION":"3.6.7","npm_package_dependencies_babel_plugin_lodash":"^3.3.2","npm_package_dependencies_dotenv":"^4.0.0","npm_package_dependencies_precss":"^2.0.0","npm_package_dependencies_react_hotkeys":"^0.10.0","npm_config_engine_strict":"","npm_config_init_author_name":"","npm_config_init_author_url":"","npm_config_tmp":"/tmp","COLORTERM":"truecolor","GIO_LAUNCHED_DESKTOP_FILE_PID":"4122","npm_package_description":"mastodon","npm_package_dependencies_react_router_dom":"^4.1.1","npm_config_depth":"Infinity","npm_config_package_lock_only":"","npm_config_save_dev":"","npm_config_usage":"","npm_package_scripts_test_jest":"cross-env NODE_ENV=test jest --coverage","npm_package_dependencies_throng":"^4.0.0","npm_package_devDependencies_react_intl_translations_manager":"^5.0.0","npm_package_readmeFilename":"README.md","npm_package_homepage":"https://github.com/tootsuite/mastodon#readme","npm_config_metrics_registry":"https://registry.npmjs.org/","npm_config_cafile":"","npm_config_otp":"","npm_config_package_lock":"true","npm_config_progress":"true","npm_config_https_proxy":"","npm_config_save_prod":"","QT_QPA_PLATFORMTHEME":"gtk2","npm_package_scripts_dev":"cross-env NODE_ENV=development webpack-dev-server --config config/webpack/development.js --progress --color","npm_package_scripts_test_lint":"eslint -c .eslintrc.yml --ext=js app/javascript/ config/webpack/ streaming/","npm_package_dependencies_babel_plugin_transform_react_remove_prop_types":"^0.4.10","npm_package_dependencies_websocket_js":"^0.1.12","npm_config_cidr":"","npm_config_onload_script":"","npm_config_sso_type":"oauth","LOGNAME":"howl","npm_package_dependencies_babel_plugin_syntax_dynamic_import":"^6.18.0","npm_package_dependencies_hammerjs":"^2.0.8","npm_package_dependencies_rails_ujs":"^5.1.2","npm_package_dependencies_react_immutable_pure_component":"^1.1.1","npm_package_dependencies_react_motion":"^0.5.2","npm_package_dependencies_reselect":"^3.0.1","npm_package_devDependencies_eslint_plugin_import":"^2.8.0","npm_config_rebuild_bundle":"true","npm_config_save_bundle":"","npm_config_shell":"/bin/bash","WINDOWID":"85983235","_":"./build.sh","npm_package_private":"true","npm_package_dependencies_express":"^4.16.2","npm_package_dependencies_react_notification":"^6.8.2","npm_package_dependencies_sass_loader":"^6.0.6","npm_config_dry_run":"","npm_config_prefix":"/usr","npm_config_scope":"","npm_config_browser":"","npm_config_cache_lock_wait":"10000","npm_config_ignore_prepublish":"","npm_config_registry":"https://registry.npmjs.org/","npm_config_save_optional":"","npm_config_searchopts":"","npm_config_versions":"","GTK_OVERLAY_SCROLLING":"0","XDG_SESSION_ID":"2","TERM":"xterm-256color","npm_package_dependencies_font_awesome":"^4.7.0","npm_package_dependencies_postcss_object_fit_images":"^1.1.2","npm_package_dependencies_react_immutable_proptypes":"^2.1.0","npm_package_dependencies_style_loader":"^0.19.0","npm_package_dependencies_uws":"^8.14.0","npm_package_optionalDependencies_fsevents":"*","npm_config_cache":"/home/howl/.npm","npm_config_proxy":"","npm_config_send_metrics":"","GNOME_DESKTOP_SESSION_ID":"this-is-deprecated","npm_package_scripts_start":"node ./streaming/index.js","npm_config_global_style":"","npm_config_ignore_scripts":"","npm_config_version":"","npm_package_dependencies_axios":"~0.16.2","npm_package_dependencies_css_loader":"^0.28.4","npm_package_dependencies_marky":"^1.2.0","npm_config_local_address":"","npm_config_viewer":"man","npm_config_node_gyp":"/usr/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js","PATH":"/usr/lib/node_modules/npm/node_modules/npm-lifecycle/node-gyp-bin:/home/howl/oc/mastofe/node_modules/.bin:/home/howl/torch-cl/install/bin:/home/howl/go/bin:/home/howl/bin:/home/howl/torch-cl/install/bin:/home/howl/go/bin:/home/howl/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games","SESSION_MANAGER":"local/pluto:@/tmp/.ICE-unix/1417,unix/pluto:/tmp/.ICE-unix/1417","npm_package_name":"mastodon","npm_package_repository_type":"git","npm_package_dependencies_babel_preset_env":"^1.6.1","npm_package_dependencies_cross_env":"^5.1.1","npm_package_dependencies_extract_text_webpack_plugin":"^3.0.2","npm_package_dependencies_substring_trie":"^1.0.2","npm_config_prefer_offline":"","NODE":"/usr/bin/node","XDG_RUNTIME_DIR":"/run/user/1000","XDG_SESSION_PATH":"/org/freedesktop/DisplayManager/Session0","npm_package_dependencies_babel_plugin_transform_runtime":"^6.23.0","npm_package_dependencies_react_redux":"^5.0.4","npm_package_dependencies_tiny_queue":"^0.2.1","npm_package_devDependencies_eslint_plugin_jsx_a11y":"^5.1.1","npm_config_color":"true","DISPLAY":":0","npm_package_scripts_build_development":"cross-env NODE_ENV=development webpack --config config/webpack/development.js","npm_package_dependencies_npm_run_all":"^4.1.2","npm_package_dependencies_stringz":"^0.3.0","npm_config_fetch_retry_mintimeout":"10000","npm_config_maxsockets":"50","npm_config_offline":"","npm_config_sso_poll_frequency":"500","LANG":"en_GB.UTF-8","XDG_CURRENT_DESKTOP":"X-Cinnamon","npm_package_dependencies_babel_plugin_transform_react_inline_elements":"^6.22.0","npm_package_dependencies_babel_preset_react":"^6.24.1","npm_package_dependencies_object_assign":"^4.1.1","npm_package_dependencies_react_dom":"^16.2.0","npm_package_dependencies_react_textarea_autosize":"^5.2.1","npm_package_dependencies_redux":"^3.7.1","npm_package_devDependencies_eslint":"^4.15.0","npm_package_devDependencies_react_test_renderer":"^16.2.0","npm_config_umask":"0022","LS_COLORS":"rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=00:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.zst=01;31:*.tzst=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.wim=01;31:*.swm=01;31:*.dwm=01;31:*.esd=01;31:*.jpg=01;35:*.jpeg=01;35:*.mjpg=01;35:*.mjpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.m4a=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.oga=00;36:*.opus=00;36:*.spx=00;36:*.xspf=00;36:","XDG_SESSION_DESKTOP":"cinnamon","XAUTHORITY":"/home/howl/.Xauthority","npm_package_dependencies_babel_plugin_transform_object_rest_spread":"^6.23.0","npm_package_dependencies_offline_plugin":"^4.8.3","npm_package_dependencies_path_complete_extname":"^0.1.0","npm_package_dependencies_postcss_smart_import":"^0.7.5","npm_package_dependencies_node_zopfli":"^2.0.2","npm_package_gitHead":"5edce2030238293463c041537da4aaeea5cb3875","npm_config_fetch_retry_maxtimeout":"60000","npm_config_loglevel":"notice","npm_config_logs_max":"10","npm_config_message":"%s","npm_lifecycle_script":"cross-env NODE_ENV=production webpack --config config/webpack/production.js","SSH_AUTH_SOCK":"/run/user/1000/keyring/ssh","XDG_GREETER_DATA_DIR":"/var/lib/lightdm/data/howl","npm_package_scripts_postversion":"git push --tags","npm_package_scripts_test":"npm-run-all test:lint test:jest","npm_package_dependencies_babel_core":"^6.25.0","npm_package_dependencies_babel_plugin_preval":"^1.6.1","npm_package_dependencies_http_link_header":"^0.8.0","npm_package_dependencies_intersection_observer":"^0.5.0","npm_package_dependencies_is_nan":"^1.2.1","npm_package_dependencies_react_intl":"^2.4.0","npm_package_dependencies_react_router_scroll_4":"^1.0.0-beta.1","npm_package_dependencies_react_swipeable_views":"^0.12.3","npm_package_dependencies_redux_immutable":"^4.0.0","npm_package_devDependencies_webpack_dev_server":"^2.9.5","npm_config_ca":"","npm_config_cert":"","npm_config_global":"","npm_config_link":"","SHELL":"/bin/bash","npm_package_repository_url":"git+https://github.com/tootsuite/mastodon.git","npm_package_dependencies_webpack_bundle_analyzer":"^2.9.1","npm_package_version":"","npm_config_access":"","npm_config_also":"","npm_config_save":"true","npm_config_unicode":"true","npm_lifecycle_event":"build","QT_ACCESSIBILITY":"1","GDMSESSION":"cinnamon","npm_package_scripts_build":"cross-env NODE_ENV=production webpack --config config/webpack/production.js","npm_package_dependencies_emoji_mart":"github:Gargron/emoji-mart#build","npm_package_dependencies_intl":"^1.2.5","npm_package_dependencies_js_yaml":"^3.9.0","npm_package_dependencies_uuid":"^3.1.0","npm_config_argv":"{\"remain\":[],\"cooked\":[\"run\",\"build\"],\"original\":[\"run\",\"build\"]}","npm_config_long":"","npm_config_production":"","npm_config_searchlimit":"20","npm_config_unsafe_perm":"true","npm_package_dependencies_array_includes":"^3.0.3","npm_package_dependencies_babel_plugin_transform_react_jsx_source":"^6.22.0","npm_package_dependencies_compression_webpack_plugin":"^1.0.1","npm_package_dependencies_file_loader":"^0.11.2","npm_package_dependencies_lodash":"^4.17.4","npm_config_auth_type":"legacy","npm_config_node_version":"9.10.1","npm_config_tag":"latest","OSU_USERNAME":"howl","npm_config_git_tag_version":"true","npm_config_commit_hooks":"true","npm_config_script_shell":"","npm_config_shrinkwrap":"true","GJS_DEBUG_OUTPUT":"stderr","GPG_AGENT_INFO":"/run/user/1000/gnupg/S.gpg-agent:0:1","npm_package_license":"AGPL-3.0-or-later","npm_package_dependencies_classnames":"^2.2.5","npm_package_dependencies_es6_symbol":"^3.1.1","npm_package_dependencies_intl_messageformat":"^2.2.0","npm_package_dependencies_punycode":"^2.1.0","npm_package_devDependencies_eslint_plugin_react":"^7.5.1","npm_config_fetch_retry_factor":"10","npm_config_save_exact":"","npm_config_strict_ssl":"true","XDG_VTNR":"7","npm_package_dependencies_babel_plugin_transform_react_jsx_self":"^6.22.0","npm_config_dev":"","npm_config_globalconfig":"/usr/etc/npmrc","npm_config_init_module":"/home/howl/.npm-init.js","npm_config_parseable":"","LUA_CPATH":"/home/howl/torch-cl/install/lib/?.so;/home/howl/.luarocks/lib/lua/5.1/?.so;/home/howl/torch-cl/install/lib/lua/5.1/?.so;./?.so;/usr/local/lib/lua/5.1/?.so;/usr/local/lib/lua/5.1/loadall.so","PWD":"/home/howl/oc/mastofe","npm_package_dependencies_intl_relativeformat":"^2.1.0","npm_package_dependencies_requestidlecallback":"^0.3.0","npm_package_dependencies_webpack_manifest_plugin":"^1.2.1","npm_package_devDependencies_enzyme":"^3.2.0","npm_package_devDependencies_raf":"^3.4.0","npm_config_globalignorefile":"/usr/etc/npmignore","npm_execpath":"/usr/lib/node_modules/npm/bin/npm-cli.js","DYLD_LIBRARY_PATH":"/home/howl/torch-cl/install/lib:/home/howl/torch-cl/install/lib:","XDG_DATA_DIRS":"/usr/share/gnome:/home/howl/.local/share/flatpak/exports/share:/var/lib/flatpak/exports/share:/usr/local/share:/usr/share","npm_package_dependencies_react_toggle":"^4.0.1","npm_config_cache_lock_retries":"10","npm_config_searchstaleness":"900","npm_package_dependencies_object_values":"^1.0.4","npm_package_dependencies_prop_types":"^15.5.10","npm_package_dependencies_resolve_url_loader":"^2.2.0","npm_package_dependencies_rimraf":"^2.6.1","npm_config_node_options":"","npm_config_save_prefix":"^","npm_config_scripts_prepend_node_path":"warn-only","npm_package_devDependencies_babel_eslint":"^8.2.1","npm_package_devDependencies_yargs":"^8.0.2","npm_config_group":"1000","npm_config_init_author_email":"","npm_config_searchexclude":"","VTE_VERSION":"5200","npm_package_dependencies_babel_loader":"^7.1.1","npm_package_dependencies_object_fit_images":"^3.2.3","npm_package_devDependencies_eslint_plugin_promise":"^3.7.0","npm_config_git":"git","npm_config_optional":"true","npm_package_dependencies_babel_plugin_transform_decorators_legacy":"^1.3.4","npm_package_dependencies_pg":"^6.4.0","npm_package_dependencies_react":"^16.2.0","npm_package_dependencies_fsevents":"*","npm_config_json":"","INIT_CWD":"/home/howl/oc/mastofe","NODE_ENV":"production"};
781
782
783
784 function openSystemCache() {
785 return caches.open('mastodon-system');
786 }
787
788 function openWebCache() {
789 return caches.open('mastodon-web');
790 }
791
792 function fetchRoot() {
793 return fetch('/web', { credentials: 'include' });
794 }
795
796 // Cause a new version of a registered Service Worker to replace an existing one
797 // that is already installed, and replace the currently active worker on open pages.
798 self.addEventListener('install', function (event) {
799 event.waitUntil(Promise.all([openWebCache(), fetchRoot()]).then(function (_ref) {
800 var cache = _ref[0],
801 root = _ref[1];
802 return cache.put('/web', root);
803 }));
804 });
805 self.addEventListener('activate', function (event) {
806 event.waitUntil(self.clients.claim());
807 });
808 self.addEventListener('fetch', function (event) {
809 var url = new URL(event.request.url);
810
811 if (url.pathname.startsWith('/web')) {
812 // we always make /web/login go through
813 if (url.pathname.startsWith('/web/login')) {
814 return;
815 }
816 var asyncResponse = fetchRoot();
817 var asyncCache = openWebCache();
818
819 event.respondWith(asyncResponse.then(async function (response) {
820 // response was redirected - let's actually do the request from the event
821 // and return its response
822 if (response.redirected || response.type === 'opaqueredirect') {
823 return await fetch(event.request);
824 }
825 if (response.ok) {
826 var cache = await asyncCache;
827 await cache.put('/web', response);
828 return response.clone();
829 }
830
831 throw null;
832 }).catch(function () {
833 return asyncCache.then(function (cache) {
834 return cache.match('/web');
835 });
836 }));
837 } else if (url.pathname === '/auth/sign_out') {
838 var _asyncResponse = fetch(event.request);
839 var _asyncCache = openWebCache();
840
841 event.respondWith(_asyncResponse.then(async function (response) {
842 if (response.ok || response.type === 'opaqueredirect') {
843 var cache = await _asyncCache;
844 await cache.delete('/web');
845 }
846
847 return response;
848 }));
849 } else if (process.env.CDN_HOST ? url.host === process.env.CDN_HOST : url.pathname.startsWith('/system/')) {
850 event.respondWith(openSystemCache().then(async function (cache) {
851 var cached = await cache.match(event.request.url);
852
853 if (cached === undefined) {
854 var fetched = await fetch(event.request);
855
856 if (fetched.ok) {
857 await cache.put(event.request.url, fetched.clone());
858 }
859
860 return fetched;
861 }
862
863 return cached;
864 }));
865 }
866 });
867
868
869 /***/ }),
870 /* 2 */
871 /***/ (function(module, exports) {
872
873 var MAX_NOTIFICATIONS = 5;
874 var GROUP_TAG = 'tag';
875
876 // Avoid loading intl-messageformat and dealing with locales in the ServiceWorker
877 var formatGroupTitle = function formatGroupTitle(message, count) {
878 return message.replace('%{count}', count);
879 };
880
881 var notify = function notify(options) {
882 return self.registration.getNotifications().then(function (notifications) {
883 if (notifications.length === MAX_NOTIFICATIONS) {
884 // Reached the maximum number of notifications, proceed with grouping
885 var group = {
886 title: formatGroupTitle(options.data.message, notifications.length + 1),
887 body: notifications.sort(function (n1, n2) {
888 return n1.timestamp < n2.timestamp;
889 }).map(function (notification) {
890 return notification.title;
891 }).join('\n'),
892 badge: '/badge.png',
893 icon: '/android-chrome-192x192.png',
894 tag: GROUP_TAG,
895 data: {
896 url: new URL('/web/notifications', self.location).href,
897 count: notifications.length + 1,
898 message: options.data.message
899 }
900 };
901
902 notifications.forEach(function (notification) {
903 return notification.close();
904 });
905
906 return self.registration.showNotification(group.title, group);
907 } else if (notifications.length === 1 && notifications[0].tag === GROUP_TAG) {
908 // Already grouped, proceed with appending the notification to the group
909 var _group = cloneNotification(notifications[0]);
910
911 _group.title = formatGroupTitle(_group.data.message, _group.data.count + 1);
912 _group.body = options.title + '\n' + _group.body;
913 _group.data = Object.assign({}, _group.data, { count: _group.data.count + 1 });
914
915 return self.registration.showNotification(_group.title, _group);
916 }
917
918 return self.registration.showNotification(options.title, options);
919 });
920 };
921
922 var handlePush = function handlePush(event) {
923 var options = event.data.json();
924
925 options.body = options.data.nsfw || options.data.content;
926 options.dir = options.data.dir;
927 options.image = options.image || undefined; // Null results in a network request (404)
928 options.timestamp = options.timestamp && new Date(options.timestamp);
929
930 var expandAction = options.data.actions.find(function (action) {
931 return action.todo === 'expand';
932 });
933
934 if (expandAction) {
935 options.actions = [expandAction];
936 options.hiddenActions = options.data.actions.filter(function (action) {
937 return action !== expandAction;
938 });
939 options.data.hiddenImage = options.image;
940 options.image = undefined;
941 } else {
942 options.actions = options.data.actions;
943 }
944
945 event.waitUntil(notify(options));
946 };
947
948 var cloneNotification = function cloneNotification(notification) {
949 var clone = {};
950
951 for (var k in notification) {
952 clone[k] = notification[k];
953 }
954
955 return clone;
956 };
957
958 var expandNotification = function expandNotification(notification) {
959 var nextNotification = cloneNotification(notification);
960
961 nextNotification.body = notification.data.content;
962 nextNotification.image = notification.data.hiddenImage;
963 nextNotification.actions = notification.data.actions.filter(function (action) {
964 return action.todo !== 'expand';
965 });
966
967 return self.registration.showNotification(nextNotification.title, nextNotification);
968 };
969
970 var makeRequest = function makeRequest(notification, action) {
971 return fetch(action.action, {
972 headers: {
973 'Authorization': 'Bearer ' + notification.data.access_token,
974 'Content-Type': 'application/json'
975 },
976 method: action.method,
977 credentials: 'include'
978 });
979 };
980
981 var findBestClient = function findBestClient(clients) {
982 var focusedClient = clients.find(function (client) {
983 return client.focused;
984 });
985 var visibleClient = clients.find(function (client) {
986 return client.visibilityState === 'visible';
987 });
988
989 return focusedClient || visibleClient || clients[0];
990 };
991
992 var openUrl = function openUrl(url) {
993 return self.clients.matchAll({ type: 'window' }).then(function (clientList) {
994 if (clientList.length !== 0) {
995 var webClients = clientList.filter(function (client) {
996 return (/\/web\//.test(client.url)
997 );
998 });
999
1000 if (webClients.length !== 0) {
1001 var client = findBestClient(webClients);
1002
1003 var _ref = new URL(url),
1004 pathname = _ref.pathname;
1005
1006 if (pathname.startsWith('/web/')) {
1007 return client.focus().then(function (client) {
1008 return client.postMessage({
1009 type: 'navigate',
1010 path: pathname.slice('/web/'.length - 1)
1011 });
1012 });
1013 }
1014 } else if ('navigate' in clientList[0]) {
1015 // Chrome 42-48 does not support navigate
1016 var _client = findBestClient(clientList);
1017
1018 return _client.navigate(url).then(function (client) {
1019 return client.focus();
1020 });
1021 }
1022 }
1023
1024 return self.clients.openWindow(url);
1025 });
1026 };
1027
1028 var removeActionFromNotification = function removeActionFromNotification(notification, action) {
1029 var actions = notification.actions.filter(function (act) {
1030 return act.action !== action.action;
1031 });
1032 var nextNotification = cloneNotification(notification);
1033
1034 nextNotification.actions = actions;
1035
1036 return self.registration.showNotification(nextNotification.title, nextNotification);
1037 };
1038
1039 var handleNotificationClick = function handleNotificationClick(event) {
1040 var reactToNotificationClick = new Promise(function (resolve, reject) {
1041 if (event.action) {
1042 var action = event.notification.data.actions.find(function (_ref2) {
1043 var action = _ref2.action;
1044 return action === event.action;
1045 });
1046
1047 if (action.todo === 'expand') {
1048 resolve(expandNotification(event.notification));
1049 } else if (action.todo === 'request') {
1050 resolve(makeRequest(event.notification, action).then(function () {
1051 return removeActionFromNotification(event.notification, action);
1052 }));
1053 } else {
1054 reject('Unknown action: ' + action.todo);
1055 }
1056 } else {
1057 event.notification.close();
1058 resolve(openUrl(event.notification.data.url));
1059 }
1060 });
1061
1062 event.waitUntil(reactToNotificationClick);
1063 };
1064
1065 self.addEventListener('push', handlePush);
1066 self.addEventListener('notificationclick', handleNotificationClick);
1067
1068 /***/ })
1069 /******/ ]);