@react-pakistan/util-functions 1.25.25 → 1.25.27
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/general/generic-cache.d.ts +1 -0
- package/general/generic-cache.js +117 -28
- package/package.json +1 -1
package/general/generic-cache.js
CHANGED
|
@@ -112,6 +112,7 @@ function isCachedMapShape(v) {
|
|
|
112
112
|
* }
|
|
113
113
|
*/
|
|
114
114
|
var getCachedDataSync = function (cacheKey, expirationMs) {
|
|
115
|
+
var _a, _b, _c;
|
|
115
116
|
if (expirationMs === void 0) { expirationMs = constants_1.ONE_DAY_IN_MS; }
|
|
116
117
|
try {
|
|
117
118
|
var raw = (0, local_storage_1.getStorageValue)(cacheKey);
|
|
@@ -122,7 +123,11 @@ var getCachedDataSync = function (cacheKey, expirationMs) {
|
|
|
122
123
|
var cachedTime = new Date(raw.cachedAt).getTime();
|
|
123
124
|
var ageInMs = currentTime - cachedTime;
|
|
124
125
|
if (ageInMs < expirationMs) {
|
|
125
|
-
return {
|
|
126
|
+
return {
|
|
127
|
+
count: (_a = raw.count) !== null && _a !== void 0 ? _a : raw.items.length,
|
|
128
|
+
items: raw.items,
|
|
129
|
+
currentPage: (_b = raw.currentPage) !== null && _b !== void 0 ? _b : undefined,
|
|
130
|
+
};
|
|
126
131
|
}
|
|
127
132
|
return { count: 0, items: [] };
|
|
128
133
|
}
|
|
@@ -131,7 +136,12 @@ var getCachedDataSync = function (cacheKey, expirationMs) {
|
|
|
131
136
|
var ageInMs = currentTime - cachedTime;
|
|
132
137
|
if (ageInMs < expirationMs) {
|
|
133
138
|
var itemsArray = Object.values(raw.items || {});
|
|
134
|
-
|
|
139
|
+
var storedCount = raw.count;
|
|
140
|
+
return {
|
|
141
|
+
count: storedCount !== null && storedCount !== void 0 ? storedCount : itemsArray.length,
|
|
142
|
+
items: itemsArray,
|
|
143
|
+
currentPage: (_c = raw.currentPage) !== null && _c !== void 0 ? _c : undefined,
|
|
144
|
+
};
|
|
135
145
|
}
|
|
136
146
|
return { count: 0, items: [] };
|
|
137
147
|
}
|
|
@@ -166,10 +176,10 @@ exports.getCachedDataSync = getCachedDataSync;
|
|
|
166
176
|
* const active = await getCachedData<UserBE>({ config, filters: { enabled: true }, pageLimit: 200 });
|
|
167
177
|
*/
|
|
168
178
|
var getCachedData = function (opts) { return __awaiter(void 0, void 0, void 0, function () {
|
|
169
|
-
var config, params, headers, cacheKey, apiUrl, responseKey, expirationMs, fallBackPageLimit, fallBackCurrentPage, filters, searchQuery, paramsWithoutFilters_1, otherParams_1, queryObj_1, searchParams_1, response_1, items_1,
|
|
170
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
|
|
171
|
-
return __generator(this, function (
|
|
172
|
-
switch (
|
|
179
|
+
var config, params, headers, cacheKey, apiUrl, responseKey, expirationMs, fallBackPageLimit, fallBackCurrentPage, filters, searchQuery, paramsWithoutFilters_1, otherParams_1, queryObj_1, searchParams_1, response_1, items_1, respCurrentPageRaw_1, respCurrentPage_1, requestCurrentPage_1, raw, currentTime, cachedTime, ageInMs, cachedTime, ageInMs, itemsArray, storedCount, cachedCurrentPage, requestedCurrentPage, paramsWithoutFilters_2, otherParams_2, queryObj_2, searchParams_2, response_2, itemsRaw_1, fetchedItems, respCount, respCurrentPageRaw_2, respCurrentPage_2, newItemsMap, mergedItemsMap, mergedItemsArray, newCount, newCurrentPage, shouldCache_1, updatedCache, paramsWithoutFilters_3, otherParams, queryObj, searchParams, response, itemsRaw, items, count, respCurrentPageRaw, respCurrentPage, requestCurrentPage, shouldCache, itemsMap, updatedCache, error_1;
|
|
180
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u;
|
|
181
|
+
return __generator(this, function (_v) {
|
|
182
|
+
switch (_v.label) {
|
|
173
183
|
case 0:
|
|
174
184
|
config = opts.config, params = opts.params, headers = opts.headers;
|
|
175
185
|
cacheKey = config.cacheKey, apiUrl = config.apiUrl, responseKey = config.responseKey;
|
|
@@ -178,9 +188,9 @@ var getCachedData = function (opts) { return __awaiter(void 0, void 0, void 0, f
|
|
|
178
188
|
fallBackCurrentPage = (_e = (_d = params === null || params === void 0 ? void 0 : params.currentPage) === null || _d === void 0 ? void 0 : _d.toString()) !== null && _e !== void 0 ? _e : '1';
|
|
179
189
|
filters = params === null || params === void 0 ? void 0 : params.filters;
|
|
180
190
|
searchQuery = params === null || params === void 0 ? void 0 : params.searchQuery;
|
|
181
|
-
|
|
191
|
+
_v.label = 1;
|
|
182
192
|
case 1:
|
|
183
|
-
|
|
193
|
+
_v.trys.push([1, 8, , 9]);
|
|
184
194
|
if (!((searchQuery && searchQuery.trim()) ||
|
|
185
195
|
(filters && Object.keys(filters).length > 0))) return [3 /*break*/, 3];
|
|
186
196
|
paramsWithoutFilters_1 = __assign({}, (params || {}));
|
|
@@ -204,14 +214,19 @@ var getCachedData = function (opts) { return __awaiter(void 0, void 0, void 0, f
|
|
|
204
214
|
headers: headers,
|
|
205
215
|
})];
|
|
206
216
|
case 2:
|
|
207
|
-
response_1 =
|
|
217
|
+
response_1 = _v.sent();
|
|
208
218
|
items_1 = responseKey
|
|
209
219
|
? ((_f = response_1 === null || response_1 === void 0 ? void 0 : response_1.data) === null || _f === void 0 ? void 0 : _f[responseKey]) || []
|
|
210
220
|
: ((_g = response_1 === null || response_1 === void 0 ? void 0 : response_1.data) === null || _g === void 0 ? void 0 : _g.items) || (response_1 === null || response_1 === void 0 ? void 0 : response_1.data) || [];
|
|
211
|
-
|
|
221
|
+
respCurrentPageRaw_1 = (_h = response_1 === null || response_1 === void 0 ? void 0 : response_1.data) === null || _h === void 0 ? void 0 : _h.currentPage;
|
|
222
|
+
respCurrentPage_1 = respCurrentPageRaw_1 == null ? undefined : Number(respCurrentPageRaw_1);
|
|
223
|
+
requestCurrentPage_1 = (params === null || params === void 0 ? void 0 : params.currentPage)
|
|
224
|
+
? Number(params.currentPage)
|
|
225
|
+
: undefined;
|
|
212
226
|
return [2 /*return*/, {
|
|
213
|
-
count: ((
|
|
227
|
+
count: ((_j = response_1 === null || response_1 === void 0 ? void 0 : response_1.data) === null || _j === void 0 ? void 0 : _j.count) || items_1.length,
|
|
214
228
|
items: items_1,
|
|
229
|
+
currentPage: respCurrentPage_1 !== null && respCurrentPage_1 !== void 0 ? respCurrentPage_1 : requestCurrentPage_1,
|
|
215
230
|
}];
|
|
216
231
|
case 3:
|
|
217
232
|
raw = (0, local_storage_1.getStorageValue)(cacheKey);
|
|
@@ -220,25 +235,92 @@ var getCachedData = function (opts) { return __awaiter(void 0, void 0, void 0, f
|
|
|
220
235
|
cachedTime = new Date(raw.cachedAt).getTime();
|
|
221
236
|
ageInMs = currentTime - cachedTime;
|
|
222
237
|
if (ageInMs < expirationMs) {
|
|
223
|
-
return [2 /*return*/, {
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
ageInMs = currentTime - cachedTime;
|
|
229
|
-
if (ageInMs < expirationMs) {
|
|
230
|
-
itemsArray = Object.values(raw.items || {});
|
|
231
|
-
return [2 /*return*/, { count: itemsArray.length, items: itemsArray }];
|
|
238
|
+
return [2 /*return*/, {
|
|
239
|
+
count: raw.count,
|
|
240
|
+
items: raw.items,
|
|
241
|
+
currentPage: (_k = raw.currentPage) !== null && _k !== void 0 ? _k : undefined,
|
|
242
|
+
}];
|
|
232
243
|
}
|
|
233
244
|
}
|
|
245
|
+
if (!isCachedMapShape(raw)) return [3 /*break*/, 6];
|
|
246
|
+
cachedTime = new Date(raw.cachedAt).getTime();
|
|
247
|
+
ageInMs = currentTime - cachedTime;
|
|
248
|
+
if (!(ageInMs < expirationMs)) return [3 /*break*/, 6];
|
|
249
|
+
itemsArray = Object.values(raw.items || {});
|
|
250
|
+
storedCount = raw.count;
|
|
251
|
+
cachedCurrentPage = raw.currentPage;
|
|
252
|
+
requestedCurrentPage = (params === null || params === void 0 ? void 0 : params.currentPage)
|
|
253
|
+
? Number(params.currentPage)
|
|
254
|
+
: undefined;
|
|
255
|
+
if (!(requestedCurrentPage !== undefined &&
|
|
256
|
+
requestedCurrentPage !== cachedCurrentPage)) return [3 /*break*/, 5];
|
|
234
257
|
paramsWithoutFilters_2 = __assign({}, (params || {}));
|
|
235
258
|
if (paramsWithoutFilters_2.filters !== undefined) {
|
|
236
259
|
delete paramsWithoutFilters_2.filters;
|
|
237
260
|
}
|
|
238
|
-
|
|
261
|
+
otherParams_2 = Object.keys(paramsWithoutFilters_2).reduce(function (acc, key) {
|
|
239
262
|
acc[key] = String(paramsWithoutFilters_2[key]);
|
|
240
263
|
return acc;
|
|
241
264
|
}, {});
|
|
265
|
+
queryObj_2 = __assign({ pageLimit: fallBackPageLimit, currentPage: String(requestedCurrentPage) }, otherParams_2);
|
|
266
|
+
searchParams_2 = new URLSearchParams(queryObj_2);
|
|
267
|
+
return [4 /*yield*/, (0, fetch_data_1.fetchData)({
|
|
268
|
+
url: "".concat(apiUrl, "?").concat(searchParams_2.toString()),
|
|
269
|
+
method: constants_1.API_METHODS.GET,
|
|
270
|
+
headers: headers,
|
|
271
|
+
})];
|
|
272
|
+
case 4:
|
|
273
|
+
response_2 = _v.sent();
|
|
274
|
+
itemsRaw_1 = (responseKey
|
|
275
|
+
? (_l = response_2 === null || response_2 === void 0 ? void 0 : response_2.data) === null || _l === void 0 ? void 0 : _l[responseKey]
|
|
276
|
+
: (_m = response_2 === null || response_2 === void 0 ? void 0 : response_2.data) === null || _m === void 0 ? void 0 : _m.items) || [];
|
|
277
|
+
fetchedItems = Array.isArray(itemsRaw_1)
|
|
278
|
+
? itemsRaw_1
|
|
279
|
+
: [itemsRaw_1];
|
|
280
|
+
respCount = (_o = response_2 === null || response_2 === void 0 ? void 0 : response_2.data) === null || _o === void 0 ? void 0 : _o.count;
|
|
281
|
+
respCurrentPageRaw_2 = (_p = response_2 === null || response_2 === void 0 ? void 0 : response_2.data) === null || _p === void 0 ? void 0 : _p.currentPage;
|
|
282
|
+
respCurrentPage_2 = respCurrentPageRaw_2 == null ? undefined : Number(respCurrentPageRaw_2);
|
|
283
|
+
newItemsMap = fetchedItems.reduce(function (acc, item, idx) {
|
|
284
|
+
var _a, _b;
|
|
285
|
+
var obj = item;
|
|
286
|
+
var keyCandidate = (_b = (_a = obj === null || obj === void 0 ? void 0 : obj.id) !== null && _a !== void 0 ? _a : obj === null || obj === void 0 ? void 0 : obj.uid) !== null && _b !== void 0 ? _b : idx;
|
|
287
|
+
var key = String(keyCandidate);
|
|
288
|
+
acc[key] = item;
|
|
289
|
+
return acc;
|
|
290
|
+
}, {});
|
|
291
|
+
mergedItemsMap = Object.assign({}, raw.items || {}, newItemsMap);
|
|
292
|
+
mergedItemsArray = Object.values(mergedItemsMap);
|
|
293
|
+
newCount = respCount !== null && respCount !== void 0 ? respCount : mergedItemsArray.length;
|
|
294
|
+
newCurrentPage = respCurrentPage_2 !== null && respCurrentPage_2 !== void 0 ? respCurrentPage_2 : requestedCurrentPage;
|
|
295
|
+
shouldCache_1 = Array.isArray(itemsRaw_1) && respCount && fetchedItems.length > 0;
|
|
296
|
+
if (shouldCache_1) {
|
|
297
|
+
updatedCache = {
|
|
298
|
+
items: mergedItemsMap,
|
|
299
|
+
cachedAt: new Date().toISOString(),
|
|
300
|
+
count: newCount,
|
|
301
|
+
currentPage: newCurrentPage,
|
|
302
|
+
};
|
|
303
|
+
(0, local_storage_1.setStorageValue)(cacheKey, updatedCache);
|
|
304
|
+
}
|
|
305
|
+
return [2 /*return*/, {
|
|
306
|
+
count: newCount,
|
|
307
|
+
items: mergedItemsArray,
|
|
308
|
+
currentPage: newCurrentPage,
|
|
309
|
+
}];
|
|
310
|
+
case 5: return [2 /*return*/, {
|
|
311
|
+
count: storedCount !== null && storedCount !== void 0 ? storedCount : itemsArray.length,
|
|
312
|
+
items: itemsArray,
|
|
313
|
+
currentPage: (_q = raw.currentPage) !== null && _q !== void 0 ? _q : undefined,
|
|
314
|
+
}];
|
|
315
|
+
case 6:
|
|
316
|
+
paramsWithoutFilters_3 = __assign({}, (params || {}));
|
|
317
|
+
if (paramsWithoutFilters_3.filters !== undefined) {
|
|
318
|
+
delete paramsWithoutFilters_3.filters;
|
|
319
|
+
}
|
|
320
|
+
otherParams = Object.keys(paramsWithoutFilters_3).reduce(function (acc, key) {
|
|
321
|
+
acc[key] = String(paramsWithoutFilters_3[key]);
|
|
322
|
+
return acc;
|
|
323
|
+
}, {});
|
|
242
324
|
queryObj = __assign({ pageLimit: fallBackPageLimit, currentPage: fallBackCurrentPage }, otherParams);
|
|
243
325
|
searchParams = new URLSearchParams(queryObj);
|
|
244
326
|
return [4 /*yield*/, (0, fetch_data_1.fetchData)({
|
|
@@ -246,14 +328,19 @@ var getCachedData = function (opts) { return __awaiter(void 0, void 0, void 0, f
|
|
|
246
328
|
method: constants_1.API_METHODS.GET,
|
|
247
329
|
headers: headers,
|
|
248
330
|
})];
|
|
249
|
-
case
|
|
250
|
-
response =
|
|
251
|
-
itemsRaw = (responseKey ? (
|
|
331
|
+
case 7:
|
|
332
|
+
response = _v.sent();
|
|
333
|
+
itemsRaw = (responseKey ? (_r = response === null || response === void 0 ? void 0 : response.data) === null || _r === void 0 ? void 0 : _r[responseKey] : (_s = response === null || response === void 0 ? void 0 : response.data) === null || _s === void 0 ? void 0 : _s.items) ||
|
|
252
334
|
[];
|
|
253
335
|
items = Array.isArray(itemsRaw)
|
|
254
336
|
? itemsRaw
|
|
255
337
|
: [itemsRaw];
|
|
256
|
-
count = (
|
|
338
|
+
count = (_t = response === null || response === void 0 ? void 0 : response.data) === null || _t === void 0 ? void 0 : _t.count;
|
|
339
|
+
respCurrentPageRaw = (_u = response === null || response === void 0 ? void 0 : response.data) === null || _u === void 0 ? void 0 : _u.currentPage;
|
|
340
|
+
respCurrentPage = respCurrentPageRaw == null ? undefined : Number(respCurrentPageRaw);
|
|
341
|
+
requestCurrentPage = (params === null || params === void 0 ? void 0 : params.currentPage)
|
|
342
|
+
? Number(params.currentPage)
|
|
343
|
+
: undefined;
|
|
257
344
|
shouldCache = Array.isArray(itemsRaw) && count && items.length > 0;
|
|
258
345
|
if (shouldCache) {
|
|
259
346
|
itemsMap = items.reduce(function (acc, item, idx) {
|
|
@@ -268,6 +355,7 @@ var getCachedData = function (opts) { return __awaiter(void 0, void 0, void 0, f
|
|
|
268
355
|
items: itemsMap,
|
|
269
356
|
cachedAt: new Date().toISOString(),
|
|
270
357
|
count: count,
|
|
358
|
+
currentPage: respCurrentPage !== null && respCurrentPage !== void 0 ? respCurrentPage : requestCurrentPage,
|
|
271
359
|
};
|
|
272
360
|
(0, local_storage_1.setStorageValue)(cacheKey, updatedCache);
|
|
273
361
|
}
|
|
@@ -275,12 +363,13 @@ var getCachedData = function (opts) { return __awaiter(void 0, void 0, void 0, f
|
|
|
275
363
|
return [2 /*return*/, {
|
|
276
364
|
count: count,
|
|
277
365
|
items: items,
|
|
366
|
+
currentPage: respCurrentPage !== null && respCurrentPage !== void 0 ? respCurrentPage : requestCurrentPage,
|
|
278
367
|
}];
|
|
279
|
-
case
|
|
280
|
-
error_1 =
|
|
368
|
+
case 8:
|
|
369
|
+
error_1 = _v.sent();
|
|
281
370
|
console.error("Error fetching data for ".concat(cacheKey, ":"), error_1);
|
|
282
371
|
return [2 /*return*/, { count: 0, items: [] }];
|
|
283
|
-
case
|
|
372
|
+
case 9: return [2 /*return*/];
|
|
284
373
|
}
|
|
285
374
|
});
|
|
286
375
|
}); };
|