@davigomesdev/cache 0.0.3 → 0.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cache.d.ts +4 -2
- package/dist/cache.d.ts.map +1 -1
- package/dist/cache.js +22 -6
- package/package.json +5 -3
package/dist/cache.d.ts
CHANGED
|
@@ -10,8 +10,8 @@ export type CacheProps<T> = {
|
|
|
10
10
|
onFirstFetch?: (response: T) => Promise<void> | void;
|
|
11
11
|
};
|
|
12
12
|
export type CacheItem = {
|
|
13
|
-
|
|
14
|
-
|
|
13
|
+
isFetching?: boolean;
|
|
14
|
+
isRefetching?: boolean;
|
|
15
15
|
isFirstFetch?: boolean;
|
|
16
16
|
key: string;
|
|
17
17
|
data?: any;
|
|
@@ -31,6 +31,8 @@ export declare class Cache {
|
|
|
31
31
|
static invalidate(fetchKey: any): void;
|
|
32
32
|
static invalidatePrefix(prefix: any): void;
|
|
33
33
|
private static getItem;
|
|
34
|
+
static getData<T>(fetchKey: any): T | undefined;
|
|
35
|
+
static setData<T>(fetchKey: any, updater: T | ((oldData: T | undefined) => T)): void;
|
|
34
36
|
private static createCacheKey;
|
|
35
37
|
private static stableStringify;
|
|
36
38
|
private static loadPersisted;
|
package/dist/cache.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../src/cache.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,UAAU,CAAC,CAAC,IAAI;IAC1B,QAAQ,EAAE,GAAG,CAAC;IACd,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,CAAC;IAC1B,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAC/C,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAChD,SAAS,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAClD,SAAS,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAClD,YAAY,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;CACtD,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG;IACtB,
|
|
1
|
+
{"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../src/cache.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,UAAU,CAAC,CAAC,IAAI;IAC1B,QAAQ,EAAE,GAAG,CAAC;IACd,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,CAAC;IAC1B,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAC/C,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAChD,SAAS,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAClD,SAAS,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAClD,YAAY,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;CACtD,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG;IACtB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,GAAG,CAAC;IACX,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,UAAU,CAAC,OAAO,WAAW,CAAC,GAAG,IAAI,CAAC;IACjD,SAAS,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAChC,OAAO,EAAE,KAAK,CAAC,CAAC,KAAK,EAAE,GAAG,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;IACrD,OAAO,EAAE,KAAK,CAAC,CAAC,QAAQ,EAAE,GAAG,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;IACxD,SAAS,EAAE,KAAK,CAAC,CAAC,QAAQ,EAAE,GAAG,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;IAC1D,SAAS,EAAE,KAAK,CAAC,CAAC,QAAQ,EAAE,GAAG,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;IAC1D,YAAY,EAAE,KAAK,CAAC,CAAC,QAAQ,EAAE,GAAG,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;CAC9D,CAAC;AAEF,qBAAa,KAAK;IAChB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAqD;WAE3D,KAAK,CAAC,CAAC,EAAE,EAAE,QAAQ,EAAE,eAAe,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,YAAY,EAAE,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI;WA8EpI,OAAO,CAAC,QAAQ,EAAE,GAAG,GAAG,IAAI;WAK5B,UAAU,CAAC,QAAQ,EAAE,GAAG,GAAG,IAAI;WAY/B,gBAAgB,CAAC,MAAM,EAAE,GAAG,GAAG,IAAI;IAUjD,OAAO,CAAC,MAAM,CAAC,OAAO;WAmBR,OAAO,CAAC,CAAC,EAAE,QAAQ,EAAE,GAAG,GAAG,CAAC,GAAG,SAAS;WAKxC,OAAO,CAAC,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC,GAAG,SAAS,KAAK,CAAC,CAAC,GAAG,IAAI;IAe3F,OAAO,CAAC,MAAM,CAAC,cAAc;IAI7B,OAAO,CAAC,MAAM,CAAC,eAAe;IAc9B,OAAO,CAAC,MAAM,CAAC,aAAa;IAS5B,OAAO,CAAC,MAAM,CAAC,WAAW;IAQ1B,OAAO,CAAC,MAAM,CAAC,eAAe;CAO/B"}
|
package/dist/cache.js
CHANGED
|
@@ -26,9 +26,9 @@ export class Cache {
|
|
|
26
26
|
};
|
|
27
27
|
if (!item.refetchFn) {
|
|
28
28
|
item.refetchFn = async () => {
|
|
29
|
-
if (item.
|
|
29
|
+
if (item.isRefetching || item.isFetching)
|
|
30
30
|
return;
|
|
31
|
-
item.
|
|
31
|
+
item.isRefetching = true;
|
|
32
32
|
try {
|
|
33
33
|
const data = await fetchFn();
|
|
34
34
|
for (const cb of item.onFetch)
|
|
@@ -44,7 +44,7 @@ export class Cache {
|
|
|
44
44
|
cb(error);
|
|
45
45
|
}
|
|
46
46
|
finally {
|
|
47
|
-
item.
|
|
47
|
+
item.isRefetching = false;
|
|
48
48
|
}
|
|
49
49
|
};
|
|
50
50
|
if (refetchInterval && !item.interval) {
|
|
@@ -54,9 +54,10 @@ export class Cache {
|
|
|
54
54
|
}
|
|
55
55
|
}
|
|
56
56
|
const runFetch = async () => {
|
|
57
|
-
if (item.
|
|
57
|
+
if (item.isRefetching || item.isFetching)
|
|
58
58
|
return;
|
|
59
|
-
item.
|
|
59
|
+
item.isFetching = true;
|
|
60
|
+
console.log('Fetch');
|
|
60
61
|
try {
|
|
61
62
|
const data = await fetchFn();
|
|
62
63
|
for (const cb of item.onFetch)
|
|
@@ -75,7 +76,7 @@ export class Cache {
|
|
|
75
76
|
cb(error);
|
|
76
77
|
}
|
|
77
78
|
finally {
|
|
78
|
-
item.
|
|
79
|
+
item.isFetching = false;
|
|
79
80
|
}
|
|
80
81
|
};
|
|
81
82
|
runFetch();
|
|
@@ -117,6 +118,21 @@ export class Cache {
|
|
|
117
118
|
}
|
|
118
119
|
return Cache.cache.get(key);
|
|
119
120
|
}
|
|
121
|
+
static getData(fetchKey) {
|
|
122
|
+
const item = Cache.getItem(fetchKey);
|
|
123
|
+
return item.data;
|
|
124
|
+
}
|
|
125
|
+
static setData(fetchKey, updater) {
|
|
126
|
+
const item = Cache.getItem(fetchKey);
|
|
127
|
+
const previousData = item.data;
|
|
128
|
+
const nextData = typeof updater === 'function' ? updater(previousData) : updater;
|
|
129
|
+
item.data = nextData;
|
|
130
|
+
if (item.persist) {
|
|
131
|
+
Cache.persistData(item.key, nextData);
|
|
132
|
+
}
|
|
133
|
+
for (const cb of item.onSuccess)
|
|
134
|
+
cb(nextData);
|
|
135
|
+
}
|
|
120
136
|
static createCacheKey(key) {
|
|
121
137
|
return typeof key === 'string' ? key : Cache.stableStringify(key);
|
|
122
138
|
}
|
package/package.json
CHANGED
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@davigomesdev/cache",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.4",
|
|
4
4
|
"main": "dist/index.js",
|
|
5
5
|
"types": "dist/index.d.ts",
|
|
6
|
-
"files": [
|
|
6
|
+
"files": [
|
|
7
|
+
"dist"
|
|
8
|
+
],
|
|
7
9
|
"scripts": {
|
|
8
10
|
"build": "tsc",
|
|
9
|
-
"publish": "
|
|
11
|
+
"publish": "publish --access public"
|
|
10
12
|
},
|
|
11
13
|
"devDependencies": {
|
|
12
14
|
"@eslint/js": "^9.39.2",
|