react-clear-cache
Advanced tools
Comparing version 1.0.24 to 1.0.25
@@ -7,2 +7,54 @@ 'use strict'; | ||
/*! ***************************************************************************** | ||
Copyright (c) Microsoft Corporation. All rights reserved. | ||
Licensed under the Apache License, Version 2.0 (the "License"); you may not use | ||
this file except in compliance with the License. You may obtain a copy of the | ||
License at http://www.apache.org/licenses/LICENSE-2.0 | ||
THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY | ||
KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED | ||
WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, | ||
MERCHANTABLITY OR NON-INFRINGEMENT. | ||
See the Apache Version 2.0 License for specific language governing permissions | ||
and limitations under the License. | ||
***************************************************************************** */ | ||
function __awaiter(thisArg, _arguments, P, generator) { | ||
return new (P || (P = Promise))(function (resolve, reject) { | ||
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } | ||
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } | ||
function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } | ||
step((generator = generator.apply(thisArg, _arguments || [])).next()); | ||
}); | ||
} | ||
function __generator(thisArg, body) { | ||
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; | ||
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; | ||
function verb(n) { return function (v) { return step([n, v]); }; } | ||
function step(op) { | ||
if (f) throw new TypeError("Generator is already executing."); | ||
while (_) try { | ||
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; | ||
if (y = 0, t) op = [op[0] & 2, t.value]; | ||
switch (op[0]) { | ||
case 0: case 1: t = op; break; | ||
case 4: _.label++; return { value: op[1], done: false }; | ||
case 5: _.label++; y = op[1]; op = [0]; continue; | ||
case 7: op = _.ops.pop(); _.trys.pop(); continue; | ||
default: | ||
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } | ||
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } | ||
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } | ||
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } | ||
if (t[2]) _.ops.pop(); | ||
_.trys.pop(); continue; | ||
} | ||
op = body.call(thisArg, _); | ||
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } | ||
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; | ||
} | ||
} | ||
function r(e,r,i){void 0===i&&(i=global);var o=React.useRef();React.useEffect(function(){o.current=r;},[r]),React.useEffect(function(){if(i&&i.addEventListener){var n=function(n){return o.current(n)};return i.addEventListener(e,n),function(){i.removeEventListener(e,n);}}},[e,i]);} | ||
@@ -13,29 +65,52 @@ | ||
/* eslint-disable */ | ||
var ClearCache = function (_a) { | ||
var _b = _a.relativePath, relativePath = _b === void 0 ? '' : _b, _c = _a.duration, duration = _c === void 0 ? 60 * 1000 : _c, children = _a.children; | ||
var _d = React.useState(true), loading = _d[0], setLoading = _d[1]; | ||
var _e = React.useState(true), isLatestVersion = _e[0], setIsLatestVersion = _e[1]; | ||
var ClearCache = function (props) { | ||
var _a = props.duration, duration = _a === void 0 ? 60 * 1000 : _a, _b = props.auto, auto = _b === void 0 ? false : _b, children = props.children; | ||
var _c = React.useState(true), loading = _c[0], setLoading = _c[1]; | ||
var _d = React.useState(true), isLatestVersion = _d[0], setIsLatestVersion = _d[1]; | ||
var useAppVersionState = createPersistedState('appVersion'); | ||
var _f = useAppVersionState(''), appVersion = _f[0], setAppVersion = _f[1]; | ||
var _g = React.useState(appVersion), latestVersion = _g[0], setLatestVersion = _g[1]; | ||
function emptyCacheStorage() { | ||
console.log('Clearing cache and hard reloading...'); | ||
if (!latestVersion) | ||
return; | ||
setAppVersion(latestVersion); | ||
if ('caches' in window) { | ||
// Service worker cache should be cleared with caches.delete() | ||
caches.keys().then(function (names) { | ||
// eslint-disable-next-line no-restricted-syntax | ||
for (var _i = 0, names_1 = names; _i < names_1.length; _i++) { | ||
var name_1 = names_1[_i]; | ||
caches.delete(name_1); | ||
var _e = useAppVersionState(''), appVersion = _e[0], setAppVersion = _e[1]; | ||
function setVersion(version) { | ||
return __awaiter(this, void 0, void 0, function () { | ||
return __generator(this, function (_a) { | ||
switch (_a.label) { | ||
case 0: return [4 /*yield*/, setAppVersion(version)]; | ||
case 1: | ||
_a.sent(); | ||
return [2 /*return*/]; | ||
} | ||
}); | ||
} | ||
// clear browser cache and reload page | ||
window.location.reload(true); | ||
}); | ||
} | ||
function emptyCacheStorage(version) { | ||
return __awaiter(this, void 0, void 0, function () { | ||
return __generator(this, function (_a) { | ||
switch (_a.label) { | ||
case 0: | ||
console.log('Clearing cache and hard reloading...'); | ||
if (!appVersion) | ||
return [2 /*return*/]; | ||
if ('caches' in window) { | ||
// Service worker cache should be cleared with caches.delete() | ||
caches.keys().then(function (names) { | ||
// eslint-disable-next-line no-restricted-syntax | ||
for (var _i = 0, names_1 = names; _i < names_1.length; _i++) { | ||
var name_1 = names_1[_i]; | ||
caches.delete(name_1); | ||
} | ||
}); | ||
} | ||
// clear browser cache and reload page | ||
return [4 /*yield*/, setVersion(version || appVersion).then(function () { | ||
return window.location.reload(true); | ||
})]; | ||
case 1: | ||
// clear browser cache and reload page | ||
_a.sent(); | ||
return [2 /*return*/]; | ||
} | ||
}); | ||
}); | ||
} | ||
function fetchMeta() { | ||
fetch(relativePath + "/meta.json", { | ||
fetch("/meta.json", { | ||
cache: 'no-store' | ||
@@ -47,12 +122,12 @@ }) | ||
var currentVersion = appVersion; | ||
var shouldForceRefresh = newVersion !== currentVersion; | ||
if (shouldForceRefresh) { | ||
var isUpdated = newVersion === currentVersion; | ||
if (!isUpdated && !auto) { | ||
console.log('An update is available!'); | ||
if (!appVersion) { | ||
setAppVersion(newVersion); | ||
} | ||
setLatestVersion(newVersion); | ||
setAppVersion(newVersion); | ||
setLoading(false); | ||
setIsLatestVersion(false); | ||
} | ||
else if (!isUpdated && auto) { | ||
emptyCacheStorage(newVersion); | ||
} | ||
else { | ||
@@ -71,3 +146,2 @@ setIsLatestVersion(true); | ||
React.useEffect(function () { | ||
console.log('object12'); | ||
fetchMeta(); | ||
@@ -77,3 +151,2 @@ }, []); | ||
loading: loading, | ||
latestVersion: latestVersion, | ||
isLatestVersion: isLatestVersion, | ||
@@ -80,0 +153,0 @@ emptyCacheStorage: emptyCacheStorage |
{ | ||
"name": "react-clear-cache", | ||
"version": "1.0.24", | ||
"version": "1.0.25", | ||
"description": "A component to manage application updates.", | ||
@@ -8,3 +8,3 @@ "author": "noahjohn9259", | ||
"repository": "noahjohn9259/react-clear-cache", | ||
"main": "src/index.js", | ||
"main": "dist/index.js", | ||
"module": "dist/index.es.js", | ||
@@ -11,0 +11,0 @@ "jsnext:main": "dist/index.es.js", |
@@ -95,1 +95,13 @@ # react-clear-cache | ||
MIT © [noahjohn9259](https://github.com/noahjohn9259) | ||
## Development | ||
1. In package.json, set `main` to `src/index.js`. | ||
2. Run `npm start` in root directory. It will build and watch if there are changes made. | ||
3. `cd example` and run `npm start`. It will run the demo application. | ||
## Note | ||
If you are done making changes, reset `main` to `dist/index.js` in package.json. |
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
67003
107
2
9
319