/
astorage.js
50 lines (39 loc) · 990 Bytes
/
astorage.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
(function(w, l, j) {
var isLocalStorageAvailable,
isJsonParserAvailable,
messages;
messages = {
ls: 'localStorage is not available',
json: 'JSON is not available',
full: 'Data can\'t be saved because localStorage is full'
};
isLocalStorageAvailable = (l in w && w[l] != undefined);
isJsonParserAvailable = (j in w && w[j] != undefined);
if (!isLocalStorageAvailable) {
throw new Error(messages.ls);
}
if (!isJsonParserAvailable) {
throw new Error(messages.json);
}
w.astorage = {
set: function(key, value) {
try {
w[l].setItem(key, w[j].stringify(value));
} catch (e) {
console.warn(messages.full);
}
},
get: function(key) {
return w[j].parse(w[l].getItem(key));
},
remove: function(key) {
w[l].removeItem(key);
},
clear: function() {
w[l].clear();
},
get length() {
return w[l].length;
}
};
})(window, 'localStorage', 'JSON');