-
Notifications
You must be signed in to change notification settings - Fork 60
Expand file tree
/
Copy pathtest.js
More file actions
85 lines (70 loc) · 2.39 KB
/
Copy pathtest.js
File metadata and controls
85 lines (70 loc) · 2.39 KB
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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
//
// ImmortalDB - A resilient key-value storage library for browsers.
//
// Ansgar Grunseid
// grunseid.com
// grunseid@gmail.com
//
// License: MIT
//
const cl = console.log
const CookieStore = ImmortalDB.CookieStore
const ImmortalStorage = ImmortalDB.ImmortalStorage
const idb = new idbKeyval.Store('ImmortalDB', 'key-value-pairs')
const idbExpires = new idbKeyval.Store('ImmortalDB', 'key-value-expires')
const POLL_TIMEOUT = 300 // Milliseconds.
const PREFIX = ImmortalDB.DEFAULT_KEY_PREFIX
let db = ImmortalDB.ImmortalDB
function sleep (ms) {
return new Promise(resolve => setTimeout(resolve, ms))
}
function $ele (id) {
return document.getElementById(id)
}
;(async () => {
const cookieStore = await new CookieStore()
const cookieDb = await new ImmortalStorage([cookieStore])
$ele('database-selection').addEventListener('change', evt => {
if (evt.target.value === 'CookieStorage') {
db = cookieDb
} else {
db = ImmortalDB
}
})
const $key = $ele('key')
const $value = $ele('value')
const $expires = $ele('expires')
$ele('get').addEventListener(
'click', async () => $value.value = await db.get($key.value), false)
$ele('set').addEventListener(
'click', async () => {
const expires = +$expires.value
await db.set($key.value, $value.value, { expires })
}, false)
$ele('remove').addEventListener('click', async () => {
await db.remove($key.value)
$value.value = ''
}, false)
$ele('removeCookie').addEventListener(
'click', () => Cookies.remove(PREFIX + $key.value))
$ele('removeIndexedDB').addEventListener(
'click', async () => await idbKeyval.del(PREFIX + $key.value, idb))
$ele('removeLocalStorage').addEventListener(
'click', () => localStorage.removeItem(PREFIX + $key.value))
$ele('removeSessionStorage').addEventListener(
'click', () => sessionStorage.removeItem(PREFIX + $key.value))
;(async function pollKeyLoop () {
const $cookies = $ele('cookies')
const $indexedDB = $ele('indexedDB')
const $localStorage = $ele('localStorage')
const $sessionStorage = $ele('sessionStorage')
while (true) {
const key = PREFIX + $key.value
$cookies.value = Cookies.get(key)
$indexedDB.value = await idbKeyval.get(key, idb)
$localStorage.value = localStorage.getItem(key)
$sessionStorage.value = sessionStorage.getItem(key)
await sleep(POLL_TIMEOUT)
}
})()
})()