diff --git a/remix-lib/src/storage.js b/remix-lib/src/storage.js index c43ebd62b5..305c8cf9e0 100644 --- a/remix-lib/src/storage.js +++ b/remix-lib/src/storage.js @@ -2,16 +2,22 @@ function Storage (prefix) { this.exists = function (name) { - return this.get(name) !== null + if (typeof window !== 'undefined') { + return this.get(name) !== null + } } this.get = function (name) { - return window.localStorage.getItem(prefix + name) + if (typeof window !== 'undefined') { + return window.localStorage.getItem(prefix + name) + } } this.set = function (name, content) { try { - window.localStorage.setItem(prefix + name, content) + if (typeof window !== 'undefined') { + window.localStorage.setItem(prefix + name, content) + } } catch (exception) { return false } @@ -19,8 +25,12 @@ function Storage (prefix) { } this.remove = function (name) { - window.localStorage.removeItem(prefix + name) - return true + if (typeof window !== 'undefined') { + window.localStorage.removeItem(prefix + name) + return true + } else { + return true + } } this.rename = function (originalName, newName) { @@ -34,7 +44,11 @@ function Storage (prefix) { function safeKeys () { // NOTE: this is a workaround for some browsers - return Object.keys(window.localStorage).filter(function (item) { return item !== null && item !== undefined }) + if (typeof window !== 'undefined') { + return Object.keys(window.localStorage).filter(function (item) { return item !== null && item !== undefined }) + } else { + return [] + } } this.keys = function () { @@ -46,16 +60,20 @@ function Storage (prefix) { } // on startup, upgrade the old storage layout - safeKeys().forEach(function (name) { - if (name.indexOf('sol-cache-file-', 0) === 0) { - var content = window.localStorage.getItem(name) - window.localStorage.setItem(name.replace(/^sol-cache-file-/, 'sol:'), content) - window.localStorage.removeItem(name) - } - }) + if (typeof window !== 'undefined') { + safeKeys().forEach(function (name) { + if (name.indexOf('sol-cache-file-', 0) === 0) { + var content = window.localStorage.getItem(name) + window.localStorage.setItem(name.replace(/^sol-cache-file-/, 'sol:'), content) + window.localStorage.removeItem(name) + } + }) + } // remove obsolete key - window.localStorage.removeItem('editor-size-cache') + if (typeof window !== 'undefined') { + window.localStorage.removeItem('editor-size-cache') + } } module.exports = Storage