@davigomesdev/cache 0.0.1 → 0.0.3
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 +5 -3
- package/dist/cache.d.ts.map +1 -1
- package/dist/cache.js +14 -12
- package/package.json +2 -2
package/dist/cache.d.ts
CHANGED
|
@@ -4,8 +4,9 @@ export type CacheProps<T> = {
|
|
|
4
4
|
persist?: boolean;
|
|
5
5
|
fetchFn: () => Promise<T>;
|
|
6
6
|
onError?: (error: any) => Promise<void> | void;
|
|
7
|
-
|
|
7
|
+
onFetch?: (response: T) => Promise<void> | void;
|
|
8
8
|
onRefetch?: (response: T) => Promise<void> | void;
|
|
9
|
+
onSuccess?: (response: T) => Promise<void> | void;
|
|
9
10
|
onFirstFetch?: (response: T) => Promise<void> | void;
|
|
10
11
|
};
|
|
11
12
|
export type CacheItem = {
|
|
@@ -18,13 +19,14 @@ export type CacheItem = {
|
|
|
18
19
|
interval?: ReturnType<typeof setInterval> | null;
|
|
19
20
|
refetchFn?: () => Promise<void>;
|
|
20
21
|
onError: Array<(error: any) => Promise<void> | void>;
|
|
21
|
-
|
|
22
|
+
onFetch: Array<(response: any) => Promise<void> | void>;
|
|
22
23
|
onRefetch: Array<(response: any) => Promise<void> | void>;
|
|
24
|
+
onSuccess: Array<(response: any) => Promise<void> | void>;
|
|
23
25
|
onFirstFetch: Array<(response: any) => Promise<void> | void>;
|
|
24
26
|
};
|
|
25
27
|
export declare class Cache {
|
|
26
28
|
private static cache;
|
|
27
|
-
static fetch<T>({ fetchKey, refetchInterval, persist, fetchFn, onError,
|
|
29
|
+
static fetch<T>({ fetchKey, refetchInterval, persist, fetchFn, onError, onFetch, onRefetch, onSuccess, onFirstFetch }: CacheProps<T>): void;
|
|
28
30
|
static refetch(fetchKey: any): void;
|
|
29
31
|
static invalidate(fetchKey: any): void;
|
|
30
32
|
static invalidatePrefix(prefix: any): void;
|
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,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,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,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,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,SAAS,EAAE,SAAS,EAAE,YAAY,EAAE,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI;
|
|
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,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,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;WA6EpI,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;IAmBtB,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
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
export class Cache {
|
|
2
|
-
static fetch({ fetchKey, refetchInterval, persist, fetchFn, onError,
|
|
2
|
+
static fetch({ fetchKey, refetchInterval, persist, fetchFn, onError, onFetch, onRefetch, onSuccess, onFirstFetch }) {
|
|
3
3
|
const item = Cache.getItem(fetchKey);
|
|
4
4
|
if (persist) {
|
|
5
5
|
item.persist = true;
|
|
6
6
|
}
|
|
7
7
|
if (onError)
|
|
8
8
|
item.onError.push(onError);
|
|
9
|
+
if (onFetch)
|
|
10
|
+
item.onFetch.push(onFetch);
|
|
9
11
|
if (onSuccess)
|
|
10
12
|
item.onSuccess.push(onSuccess);
|
|
11
13
|
if (onRefetch)
|
|
@@ -24,11 +26,13 @@ export class Cache {
|
|
|
24
26
|
};
|
|
25
27
|
if (!item.refetchFn) {
|
|
26
28
|
item.refetchFn = async () => {
|
|
27
|
-
if (item.isRefetch)
|
|
29
|
+
if (item.isRefetch || item.isFetch)
|
|
28
30
|
return;
|
|
29
31
|
item.isRefetch = true;
|
|
30
32
|
try {
|
|
31
33
|
const data = await fetchFn();
|
|
34
|
+
for (const cb of item.onFetch)
|
|
35
|
+
cb(data);
|
|
32
36
|
for (const cb of item.onRefetch)
|
|
33
37
|
cb(data);
|
|
34
38
|
for (const cb of item.onSuccess)
|
|
@@ -50,18 +54,15 @@ export class Cache {
|
|
|
50
54
|
}
|
|
51
55
|
}
|
|
52
56
|
const runFetch = async () => {
|
|
57
|
+
if (item.isRefetch || item.isFetch)
|
|
58
|
+
return;
|
|
53
59
|
item.isFetch = true;
|
|
54
60
|
try {
|
|
55
61
|
const data = await fetchFn();
|
|
56
|
-
const
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
}
|
|
61
|
-
else {
|
|
62
|
-
for (const cb of item.onRefetch)
|
|
63
|
-
cb(data);
|
|
64
|
-
}
|
|
62
|
+
for (const cb of item.onFetch)
|
|
63
|
+
cb(data);
|
|
64
|
+
for (const cb of item.onSuccess)
|
|
65
|
+
cb(data);
|
|
65
66
|
save(data);
|
|
66
67
|
if (item.isFirstFetch === undefined || !item.isFirstFetch) {
|
|
67
68
|
for (const cb of item.onFirstFetch)
|
|
@@ -108,8 +109,9 @@ export class Cache {
|
|
|
108
109
|
data: Cache.loadPersisted(key),
|
|
109
110
|
interval: null,
|
|
110
111
|
onError: [],
|
|
111
|
-
|
|
112
|
+
onFetch: [],
|
|
112
113
|
onRefetch: [],
|
|
114
|
+
onSuccess: [],
|
|
113
115
|
onFirstFetch: [],
|
|
114
116
|
});
|
|
115
117
|
}
|
package/package.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@davigomesdev/cache",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.3",
|
|
4
4
|
"main": "dist/index.js",
|
|
5
5
|
"types": "dist/index.d.ts",
|
|
6
6
|
"files": ["dist"],
|
|
7
7
|
"scripts": {
|
|
8
8
|
"build": "tsc",
|
|
9
|
-
"
|
|
9
|
+
"publish": "npm publish --access public"
|
|
10
10
|
},
|
|
11
11
|
"devDependencies": {
|
|
12
12
|
"@eslint/js": "^9.39.2",
|