45 lines
1.8 KiB
45 lines
1.8 KiB
"use strict"; |
|
// Cache system is a bit outdated and could do with work |
|
Object.defineProperty(exports, "__esModule", { value: true }); |
|
exports.default = (function (window, options, logger) { |
|
var cache = null; |
|
if (options.env !== 'development') { |
|
try { |
|
cache = (typeof window.localStorage === 'undefined') ? null : window.localStorage; |
|
} |
|
catch (_) { } |
|
} |
|
return { |
|
setCSS: function (path, lastModified, modifyVars, styles) { |
|
if (cache) { |
|
logger.info("saving " + path + " to cache."); |
|
try { |
|
cache.setItem(path, styles); |
|
cache.setItem(path + ":timestamp", lastModified); |
|
if (modifyVars) { |
|
cache.setItem(path + ":vars", JSON.stringify(modifyVars)); |
|
} |
|
} |
|
catch (e) { |
|
// TODO - could do with adding more robust error handling |
|
logger.error("failed to save \"" + path + "\" to local storage for caching."); |
|
} |
|
} |
|
}, |
|
getCSS: function (path, webInfo, modifyVars) { |
|
var css = cache && cache.getItem(path); |
|
var timestamp = cache && cache.getItem(path + ":timestamp"); |
|
var vars = cache && cache.getItem(path + ":vars"); |
|
modifyVars = modifyVars || {}; |
|
vars = vars || '{}'; // if not set, treat as the JSON representation of an empty object |
|
if (timestamp && webInfo.lastModified && |
|
(new Date(webInfo.lastModified).valueOf() === |
|
new Date(timestamp).valueOf()) && |
|
JSON.stringify(modifyVars) === vars) { |
|
// Use local copy |
|
return css; |
|
} |
|
} |
|
}; |
|
}); |
|
//# sourceMappingURL=cache.js.map
|