Skip to content

Commit ce29028

Browse files
committed
v2.0.0
1 parent 2ce0e07 commit ce29028

7 files changed

+555
-0
lines changed

dist/cache-api-keyval-amd.js

Lines changed: 141 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,141 @@
1+
define(['exports'], function (exports) { 'use strict';
2+
3+
/**
4+
* Cache API key/value store - github.com/optimalisatie/Cache-API-Key-Value-Store
5+
* Released under the terms of MIT license
6+
*
7+
* Copyright (C) 2018 github.com/optimalisatie
8+
*/
9+
var defaultStore = '--keyval';
10+
var dateHeader = 'x-d';
11+
var expireHeader = 'x-e';
12+
var contentTypeHeader = 'Content-Type';
13+
var slashKey = '/';
14+
// open store
15+
function getStore(store, key, callback, value, expire) {
16+
store = store || defaultStore;
17+
return caches.open(store).then(function (cache) {
18+
return callback(cache, new Request(['', defaultStore, key || ''].join(slashKey)), value, expire);
19+
});
20+
}
21+
// get entry from cache
22+
function cacheGet(cache, cache_key) {
23+
return cache.match(cache_key).then(function (cachedata) {
24+
// expired check
25+
if (!cachedata || cacheExpired(cache, cache_key, cachedata)) {
26+
return;
27+
}
28+
return cachedata.json();
29+
});
30+
}
31+
// delete entry from cache
32+
function cacheDel(cache, cache_key) {
33+
cacheDelete(cache, cache_key);
34+
}
35+
// set entry in cache
36+
function cacheSet(cache, cache_key, value, expire) {
37+
var headers = {};
38+
// JSON
39+
headers[contentTypeHeader] = 'application/json';
40+
value = JSON.stringify(value);
41+
// expire time
42+
if (IS_INT(expire)) {
43+
headers[dateHeader] = timestamp();
44+
headers[expireHeader] = expire;
45+
}
46+
value = new Response(value, {
47+
headers: headers
48+
});
49+
return cache.put(cache_key, value);
50+
}
51+
// delete expired
52+
function cacheExpired(cache, cache_key, cachedata) {
53+
if (cachedata) {
54+
var headers = cachedata.headers;
55+
// expired check
56+
var exp = INT(headers.get(expireHeader));
57+
var date = INT(headers.get(dateHeader));
58+
if (IS_INT(exp)) {
59+
// expired
60+
if ((date + exp) < timestamp()) {
61+
cacheDelete(cache, cache_key);
62+
return 1;
63+
}
64+
}
65+
}
66+
}
67+
// return keys
68+
function cacheKeys(cache) {
69+
return cache.keys().then(function (rawKeys) {
70+
var keys = [];
71+
rawKeys.forEach(function (key) {
72+
key = new URL(key.url).pathname.split(slashKey);
73+
key.shift();
74+
key.shift();
75+
keys.push(key.join(slashKey));
76+
});
77+
return keys;
78+
});
79+
}
80+
// clear store
81+
function cacheClear(cache) {
82+
return cache.keys().then(function (keys) {
83+
keys.forEach(function (key) {
84+
cacheDelete(cache, key);
85+
});
86+
});
87+
}
88+
// prune expired entries
89+
function cachePrune(cache) {
90+
return cache.keys().then(function (keys) {
91+
// read all entries which automatically verifies the expire date
92+
keys.forEach(function (cache_key) {
93+
cacheGet(cache, cache_key);
94+
});
95+
});
96+
}
97+
// delete from cache
98+
function cacheDelete(cache, cache_key) {
99+
cache["delete"](cache_key);
100+
}
101+
// return timestamp
102+
function timestamp() {
103+
return Math.round(Date.now() / 1000);
104+
}
105+
// return INTEGER
106+
function INT(num) {
107+
return parseInt(num);
108+
}
109+
// return INTEGER
110+
function IS_INT(num) {
111+
return !isNaN(num);
112+
}
113+
function get(key, store) {
114+
return getStore(store, key, cacheGet);
115+
}
116+
function set(key, value, expire, store) {
117+
return getStore(store, key, cacheSet, value, expire);
118+
}
119+
function del(key, store) {
120+
return getStore(store, key, cacheDel);
121+
}
122+
function clear(store) {
123+
return getStore(store, '', cacheClear);
124+
}
125+
function prune(store) {
126+
return getStore(store, '', cachePrune);
127+
}
128+
function keys(store) {
129+
return getStore(store, '', cacheKeys);
130+
}
131+
132+
exports.get = get;
133+
exports.set = set;
134+
exports.del = del;
135+
exports.clear = clear;
136+
exports.prune = prune;
137+
exports.keys = keys;
138+
139+
Object.defineProperty(exports, '__esModule', { value: true });
140+
141+
});

dist/cache-api-keyval-amd.min.js

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/cache-api-keyval-cjs.js

Lines changed: 139 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,139 @@
1+
'use strict';
2+
3+
Object.defineProperty(exports, '__esModule', { value: true });
4+
5+
/**
6+
* Cache API key/value store - github.com/optimalisatie/Cache-API-Key-Value-Store
7+
* Released under the terms of MIT license
8+
*
9+
* Copyright (C) 2018 github.com/optimalisatie
10+
*/
11+
var defaultStore = '--keyval';
12+
var dateHeader = 'x-d';
13+
var expireHeader = 'x-e';
14+
var contentTypeHeader = 'Content-Type';
15+
var slashKey = '/';
16+
// open store
17+
function getStore(store, key, callback, value, expire) {
18+
store = store || defaultStore;
19+
return caches.open(store).then(function (cache) {
20+
return callback(cache, new Request(['', defaultStore, key || ''].join(slashKey)), value, expire);
21+
});
22+
}
23+
// get entry from cache
24+
function cacheGet(cache, cache_key) {
25+
return cache.match(cache_key).then(function (cachedata) {
26+
// expired check
27+
if (!cachedata || cacheExpired(cache, cache_key, cachedata)) {
28+
return;
29+
}
30+
return cachedata.json();
31+
});
32+
}
33+
// delete entry from cache
34+
function cacheDel(cache, cache_key) {
35+
cacheDelete(cache, cache_key);
36+
}
37+
// set entry in cache
38+
function cacheSet(cache, cache_key, value, expire) {
39+
var headers = {};
40+
// JSON
41+
headers[contentTypeHeader] = 'application/json';
42+
value = JSON.stringify(value);
43+
// expire time
44+
if (IS_INT(expire)) {
45+
headers[dateHeader] = timestamp();
46+
headers[expireHeader] = expire;
47+
}
48+
value = new Response(value, {
49+
headers: headers
50+
});
51+
return cache.put(cache_key, value);
52+
}
53+
// delete expired
54+
function cacheExpired(cache, cache_key, cachedata) {
55+
if (cachedata) {
56+
var headers = cachedata.headers;
57+
// expired check
58+
var exp = INT(headers.get(expireHeader));
59+
var date = INT(headers.get(dateHeader));
60+
if (IS_INT(exp)) {
61+
// expired
62+
if ((date + exp) < timestamp()) {
63+
cacheDelete(cache, cache_key);
64+
return 1;
65+
}
66+
}
67+
}
68+
}
69+
// return keys
70+
function cacheKeys(cache) {
71+
return cache.keys().then(function (rawKeys) {
72+
var keys = [];
73+
rawKeys.forEach(function (key) {
74+
key = new URL(key.url).pathname.split(slashKey);
75+
key.shift();
76+
key.shift();
77+
keys.push(key.join(slashKey));
78+
});
79+
return keys;
80+
});
81+
}
82+
// clear store
83+
function cacheClear(cache) {
84+
return cache.keys().then(function (keys) {
85+
keys.forEach(function (key) {
86+
cacheDelete(cache, key);
87+
});
88+
});
89+
}
90+
// prune expired entries
91+
function cachePrune(cache) {
92+
return cache.keys().then(function (keys) {
93+
// read all entries which automatically verifies the expire date
94+
keys.forEach(function (cache_key) {
95+
cacheGet(cache, cache_key);
96+
});
97+
});
98+
}
99+
// delete from cache
100+
function cacheDelete(cache, cache_key) {
101+
cache["delete"](cache_key);
102+
}
103+
// return timestamp
104+
function timestamp() {
105+
return Math.round(Date.now() / 1000);
106+
}
107+
// return INTEGER
108+
function INT(num) {
109+
return parseInt(num);
110+
}
111+
// return INTEGER
112+
function IS_INT(num) {
113+
return !isNaN(num);
114+
}
115+
function get(key, store) {
116+
return getStore(store, key, cacheGet);
117+
}
118+
function set(key, value, expire, store) {
119+
return getStore(store, key, cacheSet, value, expire);
120+
}
121+
function del(key, store) {
122+
return getStore(store, key, cacheDel);
123+
}
124+
function clear(store) {
125+
return getStore(store, '', cacheClear);
126+
}
127+
function prune(store) {
128+
return getStore(store, '', cachePrune);
129+
}
130+
function keys(store) {
131+
return getStore(store, '', cacheKeys);
132+
}
133+
134+
exports.get = get;
135+
exports.set = set;
136+
exports.del = del;
137+
exports.clear = clear;
138+
exports.prune = prune;
139+
exports.keys = keys;

dist/cache-api-keyval-iife-compat.min.js

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)