aptechka 0.92.4 → 0.92.5
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.
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var __defProp=Object.defineProperty,__defProps=Object.defineProperties;var __getOwnPropDescs=Object.getOwnPropertyDescriptors;var __getOwnPropSymbols=Object.getOwnPropertySymbols;var __hasOwnProp=Object.prototype.hasOwnProperty,__propIsEnum=Object.prototype.propertyIsEnumerable;var __defNormalProp=(obj,key,value)=>key in obj?__defProp(obj,key,{enumerable:!0,configurable:!0,writable:!0,value}):obj[key]=value,__spreadValues=(a,b)=>{for(var prop in b||(b={}))__hasOwnProp.call(b,prop)&&__defNormalProp(a,prop,b[prop]);if(__getOwnPropSymbols)for(var prop of __getOwnPropSymbols(b))__propIsEnum.call(b,prop)&&__defNormalProp(a,prop,b[prop]);return a},__spreadProps=(a,b)=>__defProps(a,__getOwnPropDescs(b)),__name=(target,value)=>__defProp(target,"name",{value,configurable:!0});var __async=(__this,__arguments,generator)=>new Promise((resolve,reject)=>{var fulfilled=value=>{try{step(generator.next(value))}catch(e){reject(e)}},rejected=value=>{try{step(generator.throw(value))}catch(e){reject(e)}},step=x=>x.done?resolve(x.value):Promise.resolve(x.value).then(fulfilled,rejected);step((generator=generator.apply(__this,__arguments)).next())});Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const cache_index=require("../cache/index.cjs");require("../Store-B96mD8mD.cjs");require("../index-BoGx2BWX.cjs");require("construct-style-sheets-polyfill");const url=require("../url-D0rESDQq.cjs"),
|
|
1
|
+
"use strict";var __defProp=Object.defineProperty,__defProps=Object.defineProperties;var __getOwnPropDescs=Object.getOwnPropertyDescriptors;var __getOwnPropSymbols=Object.getOwnPropertySymbols;var __hasOwnProp=Object.prototype.hasOwnProperty,__propIsEnum=Object.prototype.propertyIsEnumerable;var __defNormalProp=(obj,key,value)=>key in obj?__defProp(obj,key,{enumerable:!0,configurable:!0,writable:!0,value}):obj[key]=value,__spreadValues=(a,b)=>{for(var prop in b||(b={}))__hasOwnProp.call(b,prop)&&__defNormalProp(a,prop,b[prop]);if(__getOwnPropSymbols)for(var prop of __getOwnPropSymbols(b))__propIsEnum.call(b,prop)&&__defNormalProp(a,prop,b[prop]);return a},__spreadProps=(a,b)=>__defProps(a,__getOwnPropDescs(b)),__name=(target,value)=>__defProp(target,"name",{value,configurable:!0});var __async=(__this,__arguments,generator)=>new Promise((resolve,reject)=>{var fulfilled=value=>{try{step(generator.next(value))}catch(e){reject(e)}},rejected=value=>{try{step(generator.throw(value))}catch(e){reject(e)}},step=x=>x.done?resolve(x.value):Promise.resolve(x.value).then(fulfilled,rejected);step((generator=generator.apply(__this,__arguments)).next())});Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const cache_index=require("../cache/index.cjs");require("../Store-B96mD8mD.cjs");require("../index-BoGx2BWX.cjs");require("construct-style-sheets-polyfill");const url=require("../url-D0rESDQq.cjs"),apiFetcherCache=new cache_index.Cache,pendingRequests=new Map;function apiFetcherClearPendingRequests(){pendingRequests.clear()}__name(apiFetcherClearPendingRequests,"apiFetcherClearPendingRequests");function apiFetcherGetPendingRequestsCount(){return pendingRequests.size}__name(apiFetcherGetPendingRequestsCount,"apiFetcherGetPendingRequestsCount");function apiFetcher(input,options){return __async(this,null,function*(){var _a,_b;const startTime=Date.now(),baseResult={data:null,error:null,status:"unknown",headers:new Headers};try{let url$1=input;if(options!=null&&options.params){const params=url.searchParamsObjectToString(options.params);if(params){const separator=url$1.includes("?")?"&":"?";url$1+=`${separator}${params}`}}const cacheKey=(_a=options==null?void 0:options.cacheKey)!=null?_a:url$1,cacheTTL=(_b=options==null?void 0:options.cacheTTLMinutes)!=null?_b:0,cacheAllowed=cacheTTL>0;if((options!=null&&options.forceClearCache||globalThis.forceClearCache)&&(apiFetcherCache.delete(cacheKey),pendingRequests.delete(cacheKey)),cacheAllowed){const cached=apiFetcherCache.get(cacheKey);if(cached)return __spreadProps(__spreadValues({},baseResult),{data:cached,cached:!0,status:"success",time:Date.now()-startTime})}const pendingRequest=pendingRequests.get(cacheKey);if(pendingRequest)return pendingRequest;const requestPromise=__async(this,null,function*(){try{const response=yield fetch(url$1,options==null?void 0:options.init);if(!response.ok){const errorText=yield response.text();return __spreadProps(__spreadValues({},baseResult),{error:errorText,status:"error",time:Date.now()-startTime,headers:response.headers})}const contentType=response.headers.get("content-type");if(!(contentType!=null&&contentType.includes("application/json")))return __spreadProps(__spreadValues({},baseResult),{error:"Endpoint did not return JSON",status:"error",time:Date.now()-startTime,headers:response.headers});const jsonData=yield response.json();return cacheAllowed&&apiFetcherCache.set(cacheKey,jsonData,cacheTTL),__spreadProps(__spreadValues({},baseResult),{data:jsonData,status:"success",time:Date.now()-startTime,headers:response.headers})}finally{pendingRequests.delete(cacheKey)}});return pendingRequests.set(cacheKey,requestPromise),yield requestPromise}catch(error){const errorMessage=error instanceof Error?error.message:String(error);return __spreadProps(__spreadValues({},baseResult),{error:errorMessage,status:"error",time:Date.now()-startTime})}})}__name(apiFetcher,"apiFetcher");exports.apiFetcher=apiFetcher;exports.apiFetcherCache=apiFetcherCache;exports.apiFetcherClearPendingRequests=apiFetcherClearPendingRequests;exports.apiFetcherGetPendingRequestsCount=apiFetcherGetPendingRequestsCount;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { Cache } from '../cache';
|
|
1
2
|
export interface IAPIFetcherOptions<Params extends object = {}> {
|
|
2
3
|
init?: RequestInit;
|
|
3
4
|
cacheKey?: string;
|
|
@@ -13,4 +14,7 @@ export interface IAPIResponseJSON<T = null> {
|
|
|
13
14
|
cached?: boolean;
|
|
14
15
|
headers: Headers;
|
|
15
16
|
}
|
|
17
|
+
export declare const apiFetcherCache: Cache;
|
|
18
|
+
export declare function apiFetcherClearPendingRequests(): void;
|
|
19
|
+
export declare function apiFetcherGetPendingRequestsCount(): number;
|
|
16
20
|
export declare function apiFetcher<Params extends object = {}, Result = any>(input: string, options?: IAPIFetcherOptions<Params>): Promise<IAPIResponseJSON<Result>>;
|
package/lib/api-fetcher/index.js
CHANGED
|
@@ -31,7 +31,15 @@ import "../Store-CAGUSjFX.js";
|
|
|
31
31
|
import "../index-DAG0CtYo.js";
|
|
32
32
|
import "construct-style-sheets-polyfill";
|
|
33
33
|
import { s as searchParamsObjectToString } from "../url-DTxLpq5m.js";
|
|
34
|
-
const
|
|
34
|
+
const apiFetcherCache = new Cache(), pendingRequests = /* @__PURE__ */ new Map();
|
|
35
|
+
function apiFetcherClearPendingRequests() {
|
|
36
|
+
pendingRequests.clear();
|
|
37
|
+
}
|
|
38
|
+
__name(apiFetcherClearPendingRequests, "apiFetcherClearPendingRequests");
|
|
39
|
+
function apiFetcherGetPendingRequestsCount() {
|
|
40
|
+
return pendingRequests.size;
|
|
41
|
+
}
|
|
42
|
+
__name(apiFetcherGetPendingRequestsCount, "apiFetcherGetPendingRequestsCount");
|
|
35
43
|
function apiFetcher(input, options) {
|
|
36
44
|
return __async(this, null, function* () {
|
|
37
45
|
var _a, _b;
|
|
@@ -51,8 +59,8 @@ function apiFetcher(input, options) {
|
|
|
51
59
|
}
|
|
52
60
|
}
|
|
53
61
|
const cacheKey = (_a = options == null ? void 0 : options.cacheKey) != null ? _a : url, cacheTTL = (_b = options == null ? void 0 : options.cacheTTLMinutes) != null ? _b : 0, cacheAllowed = cacheTTL > 0;
|
|
54
|
-
if ((options != null && options.forceClearCache || globalThis.forceClearCache) &&
|
|
55
|
-
const cached =
|
|
62
|
+
if ((options != null && options.forceClearCache || globalThis.forceClearCache) && (apiFetcherCache.delete(cacheKey), pendingRequests.delete(cacheKey)), cacheAllowed) {
|
|
63
|
+
const cached = apiFetcherCache.get(cacheKey);
|
|
56
64
|
if (cached)
|
|
57
65
|
return __spreadProps(__spreadValues({}, baseResult), {
|
|
58
66
|
data: cached,
|
|
@@ -61,31 +69,41 @@ function apiFetcher(input, options) {
|
|
|
61
69
|
time: Date.now() - startTime
|
|
62
70
|
});
|
|
63
71
|
}
|
|
64
|
-
const
|
|
65
|
-
if (
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
72
|
+
const pendingRequest = pendingRequests.get(cacheKey);
|
|
73
|
+
if (pendingRequest)
|
|
74
|
+
return pendingRequest;
|
|
75
|
+
const requestPromise = __async(this, null, function* () {
|
|
76
|
+
try {
|
|
77
|
+
const response = yield fetch(url, options == null ? void 0 : options.init);
|
|
78
|
+
if (!response.ok) {
|
|
79
|
+
const errorText = yield response.text();
|
|
80
|
+
return __spreadProps(__spreadValues({}, baseResult), {
|
|
81
|
+
error: errorText,
|
|
82
|
+
status: "error",
|
|
83
|
+
time: Date.now() - startTime,
|
|
84
|
+
headers: response.headers
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
const contentType = response.headers.get("content-type");
|
|
88
|
+
if (!(contentType != null && contentType.includes("application/json")))
|
|
89
|
+
return __spreadProps(__spreadValues({}, baseResult), {
|
|
90
|
+
error: "Endpoint did not return JSON",
|
|
91
|
+
status: "error",
|
|
92
|
+
time: Date.now() - startTime,
|
|
93
|
+
headers: response.headers
|
|
94
|
+
});
|
|
95
|
+
const jsonData = yield response.json();
|
|
96
|
+
return cacheAllowed && apiFetcherCache.set(cacheKey, jsonData, cacheTTL), __spreadProps(__spreadValues({}, baseResult), {
|
|
97
|
+
data: jsonData,
|
|
98
|
+
status: "success",
|
|
99
|
+
time: Date.now() - startTime,
|
|
100
|
+
headers: response.headers
|
|
101
|
+
});
|
|
102
|
+
} finally {
|
|
103
|
+
pendingRequests.delete(cacheKey);
|
|
104
|
+
}
|
|
88
105
|
});
|
|
106
|
+
return pendingRequests.set(cacheKey, requestPromise), yield requestPromise;
|
|
89
107
|
} catch (error) {
|
|
90
108
|
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
91
109
|
return __spreadProps(__spreadValues({}, baseResult), {
|
|
@@ -98,5 +116,8 @@ function apiFetcher(input, options) {
|
|
|
98
116
|
}
|
|
99
117
|
__name(apiFetcher, "apiFetcher");
|
|
100
118
|
export {
|
|
101
|
-
apiFetcher
|
|
119
|
+
apiFetcher,
|
|
120
|
+
apiFetcherCache,
|
|
121
|
+
apiFetcherClearPendingRequests,
|
|
122
|
+
apiFetcherGetPendingRequestsCount
|
|
102
123
|
};
|