aziosxjs 0.4.0 → 1.0.0
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/LICENSE +21 -0
- package/README.md +92 -267
- package/dist/cache/memoryCache.d.ts +4 -0
- package/dist/cache/memoryCache.js +32 -0
- package/dist/cache/memoryCache.js.map +1 -0
- package/dist/core/Azios.d.ts +33 -3
- package/dist/core/Azios.js +119 -2
- package/dist/core/Azios.js.map +1 -1
- package/dist/core/createInstance.js +3 -0
- package/dist/core/createInstance.js.map +1 -1
- package/dist/core/dispatchRequest.d.ts +1 -2
- package/dist/core/dispatchRequest.js +68 -42
- package/dist/core/dispatchRequest.js.map +1 -1
- package/dist/core/requestStore.d.ts +3 -0
- package/dist/core/requestStore.js +16 -0
- package/dist/core/requestStore.js.map +1 -0
- package/dist/errors/AziosError.d.ts +2 -2
- package/dist/errors/AziosError.js +6 -3
- package/dist/errors/AziosError.js.map +1 -1
- package/dist/helpers/buildURL.d.ts +1 -0
- package/dist/helpers/buildURL.js +27 -0
- package/dist/helpers/buildURL.js.map +1 -1
- package/dist/index.d.ts +15 -0
- package/dist/index.js +50 -0
- package/dist/index.js.map +1 -1
- package/dist/middleware/MiddlewarePipeline.d.ts +54 -0
- package/dist/middleware/MiddlewarePipeline.js +122 -0
- package/dist/middleware/MiddlewarePipeline.js.map +1 -0
- package/dist/middleware/compose.d.ts +1 -0
- package/dist/middleware/compose.js +25 -0
- package/dist/middleware/compose.js.map +1 -0
- package/dist/middleware/middlewareManager.d.ts +4 -0
- package/dist/middleware/middlewareManager.js +12 -0
- package/dist/middleware/middlewareManager.js.map +1 -0
- package/dist/plugins/pluginManager.d.ts +44 -0
- package/dist/plugins/pluginManager.js +120 -0
- package/dist/plugins/pluginManager.js.map +1 -0
- package/dist/rateLimiter/rateLimiter.d.ts +1 -0
- package/dist/rateLimiter/rateLimiter.js +31 -0
- package/dist/rateLimiter/rateLimiter.js.map +1 -0
- package/dist/runtimes/AdapterFactory.d.ts +22 -0
- package/dist/runtimes/AdapterFactory.js +43 -0
- package/dist/runtimes/AdapterFactory.js.map +1 -0
- package/dist/runtimes/HttpAdapter.d.ts +23 -0
- package/dist/runtimes/HttpAdapter.js +10 -0
- package/dist/runtimes/HttpAdapter.js.map +1 -0
- package/dist/runtimes/UniversalHttpAdapter.d.ts +19 -0
- package/dist/runtimes/UniversalHttpAdapter.js +114 -0
- package/dist/runtimes/UniversalHttpAdapter.js.map +1 -0
- package/dist/runtimes/detectRuntime.d.ts +34 -0
- package/dist/runtimes/detectRuntime.js +77 -0
- package/dist/runtimes/detectRuntime.js.map +1 -0
- package/dist/types/config.d.ts +8 -1
- package/dist/types/index.d.ts +5 -0
- package/dist/types/index.js +22 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/middleware.d.ts +16 -0
- package/dist/types/middleware.js +3 -0
- package/dist/types/middleware.js.map +1 -0
- package/dist/types/plugin.d.ts +43 -0
- package/dist/types/plugin.js +3 -0
- package/dist/types/plugin.js.map +1 -0
- package/dist/types/request.d.ts +15 -0
- package/dist/types/response.d.ts +23 -1
- package/package.json +24 -5
- package/src/adapters/httpAdapter.ts +0 -0
- package/src/adapters/index.ts +0 -0
- package/src/adapters/xhrAdapter.ts +0 -0
- package/src/cache/memoryCache.ts +45 -0
- package/src/config/mergeConfig.ts +0 -0
- package/src/core/Azios.ts +184 -0
- package/src/core/createInstance.ts +23 -0
- package/src/core/dispatchRequest.ts +111 -0
- package/src/core/requestMethods.ts +0 -0
- package/src/core/requestStore.ts +13 -0
- package/src/errors/AziosError.ts +26 -0
- package/src/helpers/buildURL.ts +44 -0
- package/src/helpers/normalizeHeaders.ts +0 -0
- package/src/helpers/parseHeaders.ts +0 -0
- package/src/index.ts +64 -0
- package/src/interceptors/InterceptorManager.ts +30 -0
- package/src/middleware/MiddlewarePipeline.ts +155 -0
- package/src/middleware/compose.ts +33 -0
- package/src/middleware/middlewareManager.ts +9 -0
- package/src/plugins/pluginManager.ts +143 -0
- package/src/rateLimiter/rateLimiter.ts +36 -0
- package/src/runtimes/AdapterFactory.ts +46 -0
- package/src/runtimes/HttpAdapter.ts +26 -0
- package/src/runtimes/UniversalHttpAdapter.ts +136 -0
- package/src/runtimes/detectRuntime.ts +85 -0
- package/src/types/config.ts +30 -0
- package/src/types/index.ts +5 -0
- package/src/types/middleware.ts +21 -0
- package/src/types/plugin.ts +50 -0
- package/src/types/request.ts +39 -0
- package/src/types/response.ts +37 -0
package/dist/core/Azios.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Azios.js","sourceRoot":"","sources":["../../src/core/Azios.ts"],"names":[],"mappings":";;;;;AAAA,wEAA+C;
|
|
1
|
+
{"version":3,"file":"Azios.js","sourceRoot":"","sources":["../../src/core/Azios.ts"],"names":[],"mappings":";;;;;AAAA,wEAA+C;AAI/C,4FAAmE;AACnE,6EAAoD;AACpD,wFAA+D;AAC/D,mDAA+C;AAE/C;;;GAGG;AACH,MAAqB,KAAK;IAWxB,YAAY,MAA0B;QACpC,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAA;QAEtB,IAAI,CAAC,YAAY,GAAG;YAClB,OAAO,EAAE,IAAI,4BAAkB,EAAE;YACjC,QAAQ,EAAE,IAAI,4BAAkB,EAAE;SACnC,CAAA;QAED,IAAI,CAAC,WAAW,GAAG,IAAI,2BAAiB,EAAE,CAAA;QAC1C,IAAI,CAAC,OAAO,GAAG,IAAI,uBAAa,EAAE,CAAA;IACpC,CAAC;IAED;;OAEG;IACH,GAAG,CAAC,EAAO;QACT,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;IAC1B,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,aAAa,CAAC,MAAmB;QACrC,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,IAA4B,CAAC,CAAA;IAClE,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,eAAe,CAAC,UAAkB;QACtC,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,UAAU,EAAE,IAA4B,CAAC,CAAA;IACxE,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,OAAO,CAAC,MAA0B;QACtC,MAAM,GAAG,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,GAAG,MAAM,EAAE,CAAA;QAExC,4BAA4B;QAC5B,4BAA4B;QAC5B,4BAA4B;QAC5B,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,yBAAyB,CAAC,MAAM,CAAC,CAAA;QAE7D,4BAA4B;QAC5B,sBAAsB;QACtB,4BAA4B;QAC5B,MAAM,OAAO,GAAG,EAAE,MAAM,EAAE,CAAA;QAC1B,MAAM,EAAE,GAAG,IAAA,iBAAO,EAAC,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAA;QAChD,MAAM,EAAE,CAAC,OAAO,CAAC,CAAA;QACjB,MAAM,GAAG,OAAO,CAAC,MAAM,CAAA;QAEvB,4BAA4B;QAC5B,uBAAuB;QACvB,4BAA4B;QAC5B,MAAM,KAAK,GAAU,EAAE,CAAA;QAEvB,uCAAuC;QACvC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE;YAC9C,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,SAAS,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAA;QAC5D,CAAC,CAAC,CAAA;QAEF,gBAAgB;QAChB,KAAK,CAAC,IAAI,CAAC,yBAAe,EAAE,SAAS,CAAC,CAAA;QAEtC,uCAAuC;QACvC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE;YAC/C,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAA;QACzD,CAAC,CAAC,CAAA;QAEF,IAAI,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;QAErC,OAAO,KAAK,CAAC,MAAM,EAAE,CAAC;YACpB,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,EAAE,CAAA;YAC/B,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,EAAE,CAAA;YAC9B,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAA;QAC7C,CAAC;QAED,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,OAAc,CAAA;YAErC,4BAA4B;YAC5B,8BAA8B;YAC9B,4BAA4B;YAC5B,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,yBAAyB,CAAC,QAAQ,CAAC,CAAA;QAC/D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,4BAA4B;YAC5B,sBAAsB;YACtB,4BAA4B;YAC5B,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;gBAC3B,MAAM,MAAM,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAA;YACrD,CAAC;YACD,MAAM,KAAK,CAAA;QACb,CAAC;IACH,CAAC;IAED,4CAA4C;IAC5C,eAAe;IACf,4CAA4C;IAE5C,GAAG,CAAC,GAAW,EAAE,MAA2B;QAC1C,OAAO,IAAI,CAAC,OAAO,CAAC;YAClB,GAAG,MAAM;YACT,MAAM,EAAE,KAAK;YACb,GAAG;SACJ,CAAC,CAAA;IACJ,CAAC;IAED,IAAI,CAAC,GAAW,EAAE,IAAU,EAAE,MAA2B;QACvD,OAAO,IAAI,CAAC,OAAO,CAAC;YAClB,GAAG,MAAM;YACT,MAAM,EAAE,MAAM;YACd,GAAG;YACH,IAAI;SACL,CAAC,CAAA;IACJ,CAAC;IAED,GAAG,CAAC,GAAW,EAAE,IAAU,EAAE,MAA2B;QACtD,OAAO,IAAI,CAAC,OAAO,CAAC;YAClB,GAAG,MAAM;YACT,MAAM,EAAE,KAAK;YACb,GAAG;YACH,IAAI;SACL,CAAC,CAAA;IACJ,CAAC;IAED,KAAK,CAAC,GAAW,EAAE,IAAU,EAAE,MAA2B;QACxD,OAAO,IAAI,CAAC,OAAO,CAAC;YAClB,GAAG,MAAM;YACT,MAAM,EAAE,OAAO;YACf,GAAG;YACH,IAAI;SACL,CAAC,CAAA;IACJ,CAAC;IAED,MAAM,CAAC,GAAW,EAAE,MAA2B;QAC7C,OAAO,IAAI,CAAC,OAAO,CAAC;YAClB,GAAG,MAAM;YACT,MAAM,EAAE,QAAQ;YAChB,GAAG;SACJ,CAAC,CAAA;IACJ,CAAC;IAED,IAAI,CAAC,GAAW,EAAE,MAA2B;QAC3C,OAAO,IAAI,CAAC,OAAO,CAAC;YAClB,GAAG,MAAM;YACT,MAAM,EAAE,MAAM;YACd,GAAG;SACJ,CAAC,CAAA;IACJ,CAAC;IAED,OAAO,CAAC,GAAW,EAAE,MAA2B;QAC9C,OAAO,IAAI,CAAC,OAAO,CAAC;YAClB,GAAG,MAAM;YACT,MAAM,EAAE,SAAS;YACjB,GAAG;SACJ,CAAC,CAAA;IACJ,CAAC;CACF;AA1KD,wBA0KC"}
|
|
@@ -10,9 +10,12 @@ function createInstance(config) {
|
|
|
10
10
|
const instance = Azios_1.default.prototype.request.bind(context);
|
|
11
11
|
Object.getOwnPropertyNames(Azios_1.default.prototype).forEach(method => {
|
|
12
12
|
if (method !== "constructor") {
|
|
13
|
+
;
|
|
13
14
|
instance[method] = Azios_1.default.prototype[method].bind(context);
|
|
14
15
|
}
|
|
15
16
|
});
|
|
17
|
+
// attach interceptors
|
|
18
|
+
instance.interceptors = context.interceptors;
|
|
16
19
|
return instance;
|
|
17
20
|
}
|
|
18
21
|
//# sourceMappingURL=createInstance.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createInstance.js","sourceRoot":"","sources":["../../src/core/createInstance.ts"],"names":[],"mappings":";;;;;AAIA,
|
|
1
|
+
{"version":3,"file":"createInstance.js","sourceRoot":"","sources":["../../src/core/createInstance.ts"],"names":[],"mappings":";;;;;AAIA,wCAkBC;AAtBD,oDAA2B;AAI3B,SAAgB,cAAc,CAAC,MAA0B;IAEvD,MAAM,OAAO,GAAG,IAAI,eAAK,CAAC,MAAM,CAAC,CAAA;IAEjC,MAAM,QAAQ,GAAG,eAAK,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAkB,CAAA;IAEvE,MAAM,CAAC,mBAAmB,CAAC,eAAK,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;QAE3D,IAAI,MAAM,KAAK,aAAa,EAAE,CAAC;YAC7B,CAAC;YAAC,QAAgB,CAAC,MAAM,CAAC,GAAI,eAAK,CAAC,SAAiB,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QAC7E,CAAC;IAEH,CAAC,CAAC,CAAA;IAEF,sBAAsB;IACtB,QAAQ,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,CAAA;IAE5C,OAAO,QAAQ,CAAA;AACjB,CAAC"}
|
|
@@ -1,3 +1,2 @@
|
|
|
1
1
|
import { AziosRequestConfig } from "../types/config";
|
|
2
|
-
|
|
3
|
-
export default function dispatchRequest(config: AziosRequestConfig): Promise<AziosResponse<any>>;
|
|
2
|
+
export default function dispatchRequest(config: AziosRequestConfig): Promise<any>;
|
|
@@ -4,48 +4,74 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.default = dispatchRequest;
|
|
7
|
-
const
|
|
8
|
-
const
|
|
9
|
-
const
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
7
|
+
const AdapterFactory_1 = __importDefault(require("../runtimes/AdapterFactory"));
|
|
8
|
+
const requestStore_1 = require("./requestStore");
|
|
9
|
+
const memoryCache_1 = require("../cache/memoryCache");
|
|
10
|
+
const rateLimiter_1 = require("../rateLimiter/rateLimiter");
|
|
11
|
+
/**
|
|
12
|
+
* Sleep utility for retry delays
|
|
13
|
+
*/
|
|
14
|
+
function delay(ms) {
|
|
15
|
+
return new Promise(resolve => setTimeout(resolve, ms));
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Make a single HTTP request using the universal adapter
|
|
19
|
+
* This ensures cross-runtime compatibility
|
|
20
|
+
*/
|
|
21
|
+
async function makeRequest(config) {
|
|
22
|
+
const adapter = AdapterFactory_1.default.getAdapter();
|
|
23
|
+
return adapter.request(config);
|
|
24
|
+
}
|
|
25
|
+
async function dispatchRequest(config) {
|
|
26
|
+
const requestKey = `${config.method}-${config.url}-${JSON.stringify(config.params)}`;
|
|
27
|
+
// -------------------------
|
|
28
|
+
// CACHE CHECK (Sprint 4)
|
|
29
|
+
// -------------------------
|
|
30
|
+
if (config.cache) {
|
|
31
|
+
const cached = (0, memoryCache_1.getCache)(requestKey);
|
|
32
|
+
if (cached) {
|
|
33
|
+
return cached;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
// -------------------------
|
|
37
|
+
// DEDUPLICATION (Sprint 3)
|
|
38
|
+
// -------------------------
|
|
39
|
+
const existing = (0, requestStore_1.getPending)(requestKey);
|
|
40
|
+
if (existing) {
|
|
41
|
+
return existing;
|
|
42
|
+
}
|
|
43
|
+
const retries = config.retry || 0;
|
|
44
|
+
const retryDelay = config.retryDelay || 300;
|
|
45
|
+
let attempt = 0;
|
|
46
|
+
const promise = (async () => {
|
|
47
|
+
var _a;
|
|
48
|
+
while (true) {
|
|
49
|
+
try {
|
|
50
|
+
const task = () => makeRequest(config);
|
|
51
|
+
const response = config.rateLimit
|
|
52
|
+
? await (0, rateLimiter_1.schedule)(task, config.rateLimit)
|
|
53
|
+
: await task();
|
|
54
|
+
// -------------------------
|
|
55
|
+
// CACHE STORE
|
|
56
|
+
// -------------------------
|
|
57
|
+
if (config.cache) {
|
|
58
|
+
(0, memoryCache_1.setCache)(requestKey, response, (_a = config.cacheTTL) !== null && _a !== void 0 ? _a : 5000);
|
|
59
|
+
}
|
|
60
|
+
(0, requestStore_1.removePending)(requestKey);
|
|
61
|
+
return response;
|
|
62
|
+
}
|
|
63
|
+
catch (err) {
|
|
64
|
+
if (attempt >= retries) {
|
|
65
|
+
(0, requestStore_1.removePending)(requestKey);
|
|
66
|
+
throw err;
|
|
67
|
+
}
|
|
68
|
+
attempt++;
|
|
69
|
+
const backoff = retryDelay * Math.pow(2, attempt);
|
|
70
|
+
await delay(backoff);
|
|
71
|
+
}
|
|
47
72
|
}
|
|
48
|
-
|
|
49
|
-
|
|
73
|
+
})();
|
|
74
|
+
(0, requestStore_1.setPending)(requestKey, promise);
|
|
75
|
+
return promise;
|
|
50
76
|
}
|
|
51
77
|
//# sourceMappingURL=dispatchRequest.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dispatchRequest.js","sourceRoot":"","sources":["../../src/core/dispatchRequest.ts"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"dispatchRequest.js","sourceRoot":"","sources":["../../src/core/dispatchRequest.ts"],"names":[],"mappings":";;;;;AA0BA,kCAoFC;AA1GD,gFAAuD;AAEvD,iDAAsE;AACtE,sDAAyD;AACzD,4DAAqD;AAErD;;GAEG;AACH,SAAS,KAAK,CAAC,EAAU;IACvB,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAA;AACxD,CAAC;AAED;;;GAGG;AACH,KAAK,UAAU,WAAW,CAAC,MAA0B;IACnD,MAAM,OAAO,GAAG,wBAAc,CAAC,UAAU,EAAE,CAAA;IAC3C,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;AAChC,CAAC;AAEc,KAAK,UAAU,eAAe,CAAC,MAA0B;IAEtE,MAAM,UAAU,GACd,GAAG,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAA;IAEnE,4BAA4B;IAC5B,yBAAyB;IACzB,4BAA4B;IAE5B,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QAEjB,MAAM,MAAM,GAAG,IAAA,sBAAQ,EAAC,UAAU,CAAC,CAAA;QAEnC,IAAI,MAAM,EAAE,CAAC;YACX,OAAO,MAAM,CAAA;QACf,CAAC;IAEH,CAAC;IAED,4BAA4B;IAC5B,2BAA2B;IAC3B,4BAA4B;IAE5B,MAAM,QAAQ,GAAG,IAAA,yBAAU,EAAC,UAAU,CAAC,CAAA;IAEvC,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,QAAQ,CAAA;IACjB,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,IAAI,CAAC,CAAA;IACjC,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,IAAI,GAAG,CAAA;IAE3C,IAAI,OAAO,GAAG,CAAC,CAAA;IAEf,MAAM,OAAO,GAAG,CAAC,KAAK,IAAI,EAAE;;QAE1B,OAAO,IAAI,EAAE,CAAC;YAEZ,IAAI,CAAC;gBAEH,MAAM,IAAI,GAAG,GAAG,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,CAAA;gBAEtC,MAAM,QAAQ,GAAG,MAAM,CAAC,SAAS;oBAC/B,CAAC,CAAC,MAAM,IAAA,sBAAQ,EAAC,IAAI,EAAE,MAAM,CAAC,SAAS,CAAC;oBACxC,CAAC,CAAC,MAAM,IAAI,EAAE,CAAA;gBAEhB,4BAA4B;gBAC5B,cAAc;gBACd,4BAA4B;gBAE5B,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;oBACjB,IAAA,sBAAQ,EAAC,UAAU,EAAE,QAAQ,EAAE,MAAA,MAAM,CAAC,QAAQ,mCAAI,IAAI,CAAC,CAAA;gBACzD,CAAC;gBAED,IAAA,4BAAa,EAAC,UAAU,CAAC,CAAA;gBAEzB,OAAO,QAAQ,CAAA;YAEjB,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBAEb,IAAI,OAAO,IAAI,OAAO,EAAE,CAAC;oBAEvB,IAAA,4BAAa,EAAC,UAAU,CAAC,CAAA;oBAEzB,MAAM,GAAG,CAAA;gBAEX,CAAC;gBAED,OAAO,EAAE,CAAA;gBAET,MAAM,OAAO,GAAG,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,CAAA;gBAEjD,MAAM,KAAK,CAAC,OAAO,CAAC,CAAA;YAEtB,CAAC;QAEH,CAAC;IAEH,CAAC,CAAC,EAAE,CAAA;IAEJ,IAAA,yBAAU,EAAC,UAAU,EAAE,OAAO,CAAC,CAAA;IAE/B,OAAO,OAAO,CAAA;AAEhB,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getPending = getPending;
|
|
4
|
+
exports.setPending = setPending;
|
|
5
|
+
exports.removePending = removePending;
|
|
6
|
+
const pendingRequests = new Map();
|
|
7
|
+
function getPending(key) {
|
|
8
|
+
return pendingRequests.get(key);
|
|
9
|
+
}
|
|
10
|
+
function setPending(key, promise) {
|
|
11
|
+
pendingRequests.set(key, promise);
|
|
12
|
+
}
|
|
13
|
+
function removePending(key) {
|
|
14
|
+
pendingRequests.delete(key);
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=requestStore.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"requestStore.js","sourceRoot":"","sources":["../../src/core/requestStore.ts"],"names":[],"mappings":";;AAEA,gCAEC;AAED,gCAEC;AAED,sCAEC;AAZD,MAAM,eAAe,GAAG,IAAI,GAAG,EAAE,CAAA;AAEjC,SAAgB,UAAU,CAAC,GAAW;IACpC,OAAO,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;AACjC,CAAC;AAED,SAAgB,UAAU,CAAC,GAAW,EAAE,OAAqB;IAC3D,eAAe,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;AACnC,CAAC;AAED,SAAgB,aAAa,CAAC,GAAW;IACvC,eAAe,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;AAC7B,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
export
|
|
1
|
+
export default class AziosError extends Error {
|
|
2
2
|
config: any;
|
|
3
3
|
code?: string;
|
|
4
4
|
request?: any;
|
|
5
5
|
response?: any;
|
|
6
|
-
constructor(message: string, config
|
|
6
|
+
constructor(message: string, code?: string, config?: any, request?: any, response?: any);
|
|
7
7
|
}
|
|
@@ -1,11 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.AziosError = void 0;
|
|
4
3
|
class AziosError extends Error {
|
|
5
|
-
constructor(message, config) {
|
|
4
|
+
constructor(message, code, config, request, response) {
|
|
6
5
|
super(message);
|
|
6
|
+
this.name = "AziosError";
|
|
7
|
+
this.code = code;
|
|
7
8
|
this.config = config;
|
|
9
|
+
this.request = request;
|
|
10
|
+
this.response = response;
|
|
8
11
|
}
|
|
9
12
|
}
|
|
10
|
-
exports.
|
|
13
|
+
exports.default = AziosError;
|
|
11
14
|
//# sourceMappingURL=AziosError.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AziosError.js","sourceRoot":"","sources":["../../src/errors/AziosError.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"AziosError.js","sourceRoot":"","sources":["../../src/errors/AziosError.ts"],"names":[],"mappings":";;AAAA,MAAqB,UAAW,SAAQ,KAAK;IAO3C,YACE,OAAe,EACf,IAAa,EACb,MAAY,EACZ,OAAa,EACb,QAAc;QAGd,KAAK,CAAC,OAAO,CAAC,CAAA;QAEd,IAAI,CAAC,IAAI,GAAG,YAAY,CAAA;QACxB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QAChB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACpB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;QACtB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;IAE1B,CAAC;CAEF;AAzBD,6BAyBC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export default function buildURL(url: string, params?: Record<string, any>): string;
|
package/dist/helpers/buildURL.js
CHANGED
|
@@ -1,2 +1,29 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.default = buildURL;
|
|
4
|
+
function buildURL(url, params) {
|
|
5
|
+
if (!params)
|
|
6
|
+
return url;
|
|
7
|
+
const parts = [];
|
|
8
|
+
Object.keys(params).forEach(key => {
|
|
9
|
+
const val = params[key];
|
|
10
|
+
if (val === null || typeof val === "undefined") {
|
|
11
|
+
return;
|
|
12
|
+
}
|
|
13
|
+
if (Array.isArray(val)) {
|
|
14
|
+
val.forEach(v => {
|
|
15
|
+
parts.push(`${encodeURIComponent(key)}=${encodeURIComponent(v)}`);
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
else {
|
|
19
|
+
parts.push(`${encodeURIComponent(key)}=${encodeURIComponent(val)}`);
|
|
20
|
+
}
|
|
21
|
+
});
|
|
22
|
+
if (parts.length === 0)
|
|
23
|
+
return url;
|
|
24
|
+
const serialized = parts.join("&");
|
|
25
|
+
return url.includes("?")
|
|
26
|
+
? `${url}&${serialized}`
|
|
27
|
+
: `${url}?${serialized}`;
|
|
28
|
+
}
|
|
2
29
|
//# sourceMappingURL=buildURL.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"buildURL.js","sourceRoot":"","sources":["../../src/helpers/buildURL.ts"],"names":[],"mappings":""}
|
|
1
|
+
{"version":3,"file":"buildURL.js","sourceRoot":"","sources":["../../src/helpers/buildURL.ts"],"names":[],"mappings":";;AAAA,2BA2CC;AA3CD,SAAwB,QAAQ,CAC9B,GAAW,EACX,MAA4B;IAG5B,IAAI,CAAC,MAAM;QAAE,OAAO,GAAG,CAAA;IAEvB,MAAM,KAAK,GAAa,EAAE,CAAA;IAE1B,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;QAEhC,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,CAAA;QAEvB,IAAI,GAAG,KAAK,IAAI,IAAI,OAAO,GAAG,KAAK,WAAW,EAAE,CAAC;YAC/C,OAAM;QACR,CAAC;QAED,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;YAEvB,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;gBACd,KAAK,CAAC,IAAI,CACR,GAAG,kBAAkB,CAAC,GAAG,CAAC,IAAI,kBAAkB,CAAC,CAAC,CAAC,EAAE,CACtD,CAAA;YACH,CAAC,CAAC,CAAA;QAEJ,CAAC;aAAM,CAAC;YAEN,KAAK,CAAC,IAAI,CACR,GAAG,kBAAkB,CAAC,GAAG,CAAC,IAAI,kBAAkB,CAAC,GAAG,CAAC,EAAE,CACxD,CAAA;QAEH,CAAC;IAEH,CAAC,CAAC,CAAA;IAEF,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,GAAG,CAAA;IAElC,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IAElC,OAAO,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC;QACtB,CAAC,CAAC,GAAG,GAAG,IAAI,UAAU,EAAE;QACxB,CAAC,CAAC,GAAG,GAAG,IAAI,UAAU,EAAE,CAAA;AAE5B,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,2 +1,17 @@
|
|
|
1
1
|
declare const azios: import("./types/request").AziosInstance;
|
|
2
|
+
export type { AziosRequestConfig } from "./types/config";
|
|
3
|
+
export type { AziosResponse } from "./types/response";
|
|
4
|
+
export type { AziosInstance } from "./types/request";
|
|
5
|
+
export type { AziosPlugin, PluginHooks } from "./types/plugin";
|
|
6
|
+
export { default as AziosError } from "./errors/AziosError";
|
|
7
|
+
export { default as InterceptorManager } from "./interceptors/InterceptorManager";
|
|
8
|
+
export { default as Azios } from "./core/Azios";
|
|
9
|
+
export { createInstance } from "./core/createInstance";
|
|
10
|
+
export { default as PluginManager } from "./plugins/pluginManager";
|
|
11
|
+
export { default as MiddlewarePipeline } from "./middleware/MiddlewarePipeline";
|
|
12
|
+
export type { RequestMiddleware, ResponseMiddleware } from "./middleware/MiddlewarePipeline";
|
|
13
|
+
export { detectRuntime, currentRuntime, isRuntime, isServerRuntime, isBrowserRuntime, RuntimeType } from "./runtimes/detectRuntime";
|
|
14
|
+
export { default as AdapterFactory } from "./runtimes/AdapterFactory";
|
|
15
|
+
export { getCache, setCache, clearCache } from "./cache/memoryCache";
|
|
16
|
+
export { schedule } from "./rateLimiter/rateLimiter";
|
|
2
17
|
export default azios;
|
package/dist/index.js
CHANGED
|
@@ -1,8 +1,58 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
2
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.schedule = exports.clearCache = exports.setCache = exports.getCache = exports.AdapterFactory = exports.RuntimeType = exports.isBrowserRuntime = exports.isServerRuntime = exports.isRuntime = exports.currentRuntime = exports.detectRuntime = exports.MiddlewarePipeline = exports.PluginManager = exports.createInstance = exports.Azios = exports.InterceptorManager = exports.AziosError = void 0;
|
|
3
7
|
const createInstance_1 = require("./core/createInstance");
|
|
8
|
+
// Export main instance
|
|
4
9
|
const azios = (0, createInstance_1.createInstance)({
|
|
5
10
|
url: ""
|
|
6
11
|
});
|
|
12
|
+
// ============================================
|
|
13
|
+
// Class Exports
|
|
14
|
+
// ============================================
|
|
15
|
+
var AziosError_1 = require("./errors/AziosError");
|
|
16
|
+
Object.defineProperty(exports, "AziosError", { enumerable: true, get: function () { return __importDefault(AziosError_1).default; } });
|
|
17
|
+
var InterceptorManager_1 = require("./interceptors/InterceptorManager");
|
|
18
|
+
Object.defineProperty(exports, "InterceptorManager", { enumerable: true, get: function () { return __importDefault(InterceptorManager_1).default; } });
|
|
19
|
+
var Azios_1 = require("./core/Azios");
|
|
20
|
+
Object.defineProperty(exports, "Azios", { enumerable: true, get: function () { return __importDefault(Azios_1).default; } });
|
|
21
|
+
var createInstance_2 = require("./core/createInstance");
|
|
22
|
+
Object.defineProperty(exports, "createInstance", { enumerable: true, get: function () { return createInstance_2.createInstance; } });
|
|
23
|
+
// ============================================
|
|
24
|
+
// Plugin System Exports
|
|
25
|
+
// ============================================
|
|
26
|
+
var pluginManager_1 = require("./plugins/pluginManager");
|
|
27
|
+
Object.defineProperty(exports, "PluginManager", { enumerable: true, get: function () { return __importDefault(pluginManager_1).default; } });
|
|
28
|
+
// ============================================
|
|
29
|
+
// Middleware System Exports
|
|
30
|
+
// ============================================
|
|
31
|
+
var MiddlewarePipeline_1 = require("./middleware/MiddlewarePipeline");
|
|
32
|
+
Object.defineProperty(exports, "MiddlewarePipeline", { enumerable: true, get: function () { return __importDefault(MiddlewarePipeline_1).default; } });
|
|
33
|
+
// ============================================
|
|
34
|
+
// Runtime Support Exports
|
|
35
|
+
// ============================================
|
|
36
|
+
var detectRuntime_1 = require("./runtimes/detectRuntime");
|
|
37
|
+
Object.defineProperty(exports, "detectRuntime", { enumerable: true, get: function () { return detectRuntime_1.detectRuntime; } });
|
|
38
|
+
Object.defineProperty(exports, "currentRuntime", { enumerable: true, get: function () { return detectRuntime_1.currentRuntime; } });
|
|
39
|
+
Object.defineProperty(exports, "isRuntime", { enumerable: true, get: function () { return detectRuntime_1.isRuntime; } });
|
|
40
|
+
Object.defineProperty(exports, "isServerRuntime", { enumerable: true, get: function () { return detectRuntime_1.isServerRuntime; } });
|
|
41
|
+
Object.defineProperty(exports, "isBrowserRuntime", { enumerable: true, get: function () { return detectRuntime_1.isBrowserRuntime; } });
|
|
42
|
+
Object.defineProperty(exports, "RuntimeType", { enumerable: true, get: function () { return detectRuntime_1.RuntimeType; } });
|
|
43
|
+
var AdapterFactory_1 = require("./runtimes/AdapterFactory");
|
|
44
|
+
Object.defineProperty(exports, "AdapterFactory", { enumerable: true, get: function () { return __importDefault(AdapterFactory_1).default; } });
|
|
45
|
+
// ============================================
|
|
46
|
+
// Cache & Rate Limit Exports
|
|
47
|
+
// ============================================
|
|
48
|
+
var memoryCache_1 = require("./cache/memoryCache");
|
|
49
|
+
Object.defineProperty(exports, "getCache", { enumerable: true, get: function () { return memoryCache_1.getCache; } });
|
|
50
|
+
Object.defineProperty(exports, "setCache", { enumerable: true, get: function () { return memoryCache_1.setCache; } });
|
|
51
|
+
Object.defineProperty(exports, "clearCache", { enumerable: true, get: function () { return memoryCache_1.clearCache; } });
|
|
52
|
+
var rateLimiter_1 = require("./rateLimiter/rateLimiter");
|
|
53
|
+
Object.defineProperty(exports, "schedule", { enumerable: true, get: function () { return rateLimiter_1.schedule; } });
|
|
54
|
+
// ============================================
|
|
55
|
+
// Default Export
|
|
56
|
+
// ============================================
|
|
7
57
|
exports.default = azios;
|
|
8
58
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;AAAA,0DAAsD;AAEtD,uBAAuB;AACvB,MAAM,KAAK,GAAG,IAAA,+BAAc,EAAC;IAC3B,GAAG,EAAE,EAAE;CACR,CAAC,CAAA;AAWF,+CAA+C;AAC/C,gBAAgB;AAChB,+CAA+C;AAE/C,kDAA2D;AAAlD,yHAAA,OAAO,OAAc;AAC9B,wEAAiF;AAAxE,yIAAA,OAAO,OAAsB;AACtC,sCAA+C;AAAtC,+GAAA,OAAO,OAAS;AACzB,wDAAsD;AAA7C,gHAAA,cAAc,OAAA;AAEvB,+CAA+C;AAC/C,wBAAwB;AACxB,+CAA+C;AAE/C,yDAAkE;AAAzD,+HAAA,OAAO,OAAiB;AAEjC,+CAA+C;AAC/C,4BAA4B;AAC5B,+CAA+C;AAE/C,sEAA+E;AAAtE,yIAAA,OAAO,OAAsB;AAGtC,+CAA+C;AAC/C,0BAA0B;AAC1B,+CAA+C;AAE/C,0DAOiC;AAN/B,8GAAA,aAAa,OAAA;AACb,+GAAA,cAAc,OAAA;AACd,0GAAA,SAAS,OAAA;AACT,gHAAA,eAAe,OAAA;AACf,iHAAA,gBAAgB,OAAA;AAChB,4GAAA,WAAW,OAAA;AAEb,4DAAqE;AAA5D,iIAAA,OAAO,OAAkB;AAElC,+CAA+C;AAC/C,6BAA6B;AAC7B,+CAA+C;AAE/C,mDAAoE;AAA3D,uGAAA,QAAQ,OAAA;AAAE,uGAAA,QAAQ,OAAA;AAAE,yGAAA,UAAU,OAAA;AACvC,yDAAoD;AAA3C,uGAAA,QAAQ,OAAA;AAEjB,+CAA+C;AAC/C,iBAAiB;AACjB,+CAA+C;AAE/C,kBAAe,KAAK,CAAA"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import type { AziosRequestConfig } from '../types/config';
|
|
2
|
+
import type { AziosResponse } from '../types/response';
|
|
3
|
+
/**
|
|
4
|
+
* Middleware handler types
|
|
5
|
+
* Supports async middleware in the style of Koa
|
|
6
|
+
*/
|
|
7
|
+
export type RequestMiddleware = (config: AziosRequestConfig, next: () => Promise<AziosResponse>) => Promise<AziosResponse>;
|
|
8
|
+
export type ResponseMiddleware = (response: AziosResponse, next: () => Promise<AziosResponse>) => Promise<AziosResponse>;
|
|
9
|
+
/**
|
|
10
|
+
* Composition utility for middleware chaining
|
|
11
|
+
* Implements Koa-style middleware flow control
|
|
12
|
+
*/
|
|
13
|
+
export declare class MiddlewarePipeline {
|
|
14
|
+
private requestMiddleware;
|
|
15
|
+
private responseMiddleware;
|
|
16
|
+
/**
|
|
17
|
+
* Add request middleware
|
|
18
|
+
* Middleware will execute in registration order
|
|
19
|
+
*/
|
|
20
|
+
useRequest(middleware: RequestMiddleware): this;
|
|
21
|
+
/**
|
|
22
|
+
* Add response middleware
|
|
23
|
+
* Middleware will execute in registration order
|
|
24
|
+
*/
|
|
25
|
+
useResponse(middleware: ResponseMiddleware): this;
|
|
26
|
+
/**
|
|
27
|
+
* Compose request middleware with proper async error handling
|
|
28
|
+
*/
|
|
29
|
+
private composeRequest;
|
|
30
|
+
/**
|
|
31
|
+
* Compose response middleware with proper async error handling
|
|
32
|
+
*/
|
|
33
|
+
private composeResponse;
|
|
34
|
+
/**
|
|
35
|
+
* Execute request middleware pipeline
|
|
36
|
+
*/
|
|
37
|
+
executeRequestMiddleware(config: AziosRequestConfig, next: () => Promise<AziosResponse>): Promise<AziosResponse>;
|
|
38
|
+
/**
|
|
39
|
+
* Execute response middleware pipeline
|
|
40
|
+
*/
|
|
41
|
+
executeResponseMiddleware(response: AziosResponse, next: () => Promise<AziosResponse>): Promise<AziosResponse>;
|
|
42
|
+
/**
|
|
43
|
+
* Clear all middleware
|
|
44
|
+
*/
|
|
45
|
+
clear(): void;
|
|
46
|
+
/**
|
|
47
|
+
* Get registered middleware count
|
|
48
|
+
*/
|
|
49
|
+
getMiddlewareCount(): {
|
|
50
|
+
request: number;
|
|
51
|
+
response: number;
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
export default MiddlewarePipeline;
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MiddlewarePipeline = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Composition utility for middleware chaining
|
|
6
|
+
* Implements Koa-style middleware flow control
|
|
7
|
+
*/
|
|
8
|
+
class MiddlewarePipeline {
|
|
9
|
+
constructor() {
|
|
10
|
+
this.requestMiddleware = [];
|
|
11
|
+
this.responseMiddleware = [];
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Add request middleware
|
|
15
|
+
* Middleware will execute in registration order
|
|
16
|
+
*/
|
|
17
|
+
useRequest(middleware) {
|
|
18
|
+
this.requestMiddleware.push(middleware);
|
|
19
|
+
return this;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Add response middleware
|
|
23
|
+
* Middleware will execute in registration order
|
|
24
|
+
*/
|
|
25
|
+
useResponse(middleware) {
|
|
26
|
+
this.responseMiddleware.push(middleware);
|
|
27
|
+
return this;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Compose request middleware with proper async error handling
|
|
31
|
+
*/
|
|
32
|
+
composeRequest() {
|
|
33
|
+
const middleware = this.requestMiddleware;
|
|
34
|
+
return async (config, next) => {
|
|
35
|
+
let index = -1;
|
|
36
|
+
const dispatch = async (i) => {
|
|
37
|
+
if (i <= index) {
|
|
38
|
+
throw new Error('next() called multiple times in middleware');
|
|
39
|
+
}
|
|
40
|
+
index = i;
|
|
41
|
+
try {
|
|
42
|
+
if (i < middleware.length) {
|
|
43
|
+
return await middleware[i](config, () => dispatch(i + 1));
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
return await next();
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
catch (err) {
|
|
50
|
+
throw err;
|
|
51
|
+
}
|
|
52
|
+
};
|
|
53
|
+
return dispatch(0);
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Compose response middleware with proper async error handling
|
|
58
|
+
*/
|
|
59
|
+
composeResponse() {
|
|
60
|
+
const middleware = this.responseMiddleware;
|
|
61
|
+
return async (response, next) => {
|
|
62
|
+
let index = -1;
|
|
63
|
+
const dispatch = async (i) => {
|
|
64
|
+
if (i <= index) {
|
|
65
|
+
throw new Error('next() called multiple times in middleware');
|
|
66
|
+
}
|
|
67
|
+
index = i;
|
|
68
|
+
try {
|
|
69
|
+
if (i < middleware.length) {
|
|
70
|
+
return await middleware[i](response, () => dispatch(i + 1));
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
return await next();
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
catch (err) {
|
|
77
|
+
throw err;
|
|
78
|
+
}
|
|
79
|
+
};
|
|
80
|
+
return dispatch(0);
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Execute request middleware pipeline
|
|
85
|
+
*/
|
|
86
|
+
async executeRequestMiddleware(config, next) {
|
|
87
|
+
if (this.requestMiddleware.length === 0) {
|
|
88
|
+
return next();
|
|
89
|
+
}
|
|
90
|
+
const composed = this.composeRequest();
|
|
91
|
+
return composed(config, next);
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Execute response middleware pipeline
|
|
95
|
+
*/
|
|
96
|
+
async executeResponseMiddleware(response, next) {
|
|
97
|
+
if (this.responseMiddleware.length === 0) {
|
|
98
|
+
return next();
|
|
99
|
+
}
|
|
100
|
+
const composed = this.composeResponse();
|
|
101
|
+
return composed(response, next);
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Clear all middleware
|
|
105
|
+
*/
|
|
106
|
+
clear() {
|
|
107
|
+
this.requestMiddleware = [];
|
|
108
|
+
this.responseMiddleware = [];
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Get registered middleware count
|
|
112
|
+
*/
|
|
113
|
+
getMiddlewareCount() {
|
|
114
|
+
return {
|
|
115
|
+
request: this.requestMiddleware.length,
|
|
116
|
+
response: this.responseMiddleware.length
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
exports.MiddlewarePipeline = MiddlewarePipeline;
|
|
121
|
+
exports.default = MiddlewarePipeline;
|
|
122
|
+
//# sourceMappingURL=MiddlewarePipeline.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MiddlewarePipeline.js","sourceRoot":"","sources":["../../src/middleware/MiddlewarePipeline.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function compose(middleware: any[]): (context: any) => Promise<any>;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.compose = compose;
|
|
4
|
+
function compose(middleware) {
|
|
5
|
+
return function (context) {
|
|
6
|
+
let index = -1;
|
|
7
|
+
function dispatch(i) {
|
|
8
|
+
if (i <= index) {
|
|
9
|
+
return Promise.reject(new Error("next() called multiple times"));
|
|
10
|
+
}
|
|
11
|
+
index = i;
|
|
12
|
+
const fn = middleware[i];
|
|
13
|
+
if (!fn)
|
|
14
|
+
return Promise.resolve();
|
|
15
|
+
try {
|
|
16
|
+
return Promise.resolve(fn(context, () => dispatch(i + 1)));
|
|
17
|
+
}
|
|
18
|
+
catch (err) {
|
|
19
|
+
return Promise.reject(err);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
return dispatch(0);
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=compose.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compose.js","sourceRoot":"","sources":["../../src/middleware/compose.ts"],"names":[],"mappings":";;AAAA,0BAgCC;AAhCD,SAAgB,OAAO,CAAC,UAAiB;IAEvC,OAAO,UAAU,OAAY;QAE3B,IAAI,KAAK,GAAG,CAAC,CAAC,CAAA;QAEd,SAAS,QAAQ,CAAC,CAAS;YAEzB,IAAI,CAAC,IAAI,KAAK,EAAE,CAAC;gBACf,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC,CAAA;YAClE,CAAC;YAED,KAAK,GAAG,CAAC,CAAA;YAET,MAAM,EAAE,GAAG,UAAU,CAAC,CAAC,CAAC,CAAA;YAExB,IAAI,CAAC,EAAE;gBAAE,OAAO,OAAO,CAAC,OAAO,EAAE,CAAA;YAEjC,IAAI,CAAC;gBACH,OAAO,OAAO,CAAC,OAAO,CACpB,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CACnC,CAAA;YACH,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,OAAO,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;YAC5B,CAAC;QAEH,CAAC;QAED,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAA;IAEpB,CAAC,CAAA;AAEH,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
class MiddlewareManager {
|
|
4
|
+
constructor() {
|
|
5
|
+
this.middlewares = [];
|
|
6
|
+
}
|
|
7
|
+
use(fn) {
|
|
8
|
+
this.middlewares.push(fn);
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
exports.default = MiddlewareManager;
|
|
12
|
+
//# sourceMappingURL=middlewareManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"middlewareManager.js","sourceRoot":"","sources":["../../src/middleware/middlewareManager.ts"],"names":[],"mappings":";;AAAA,MAAqB,iBAAiB;IAAtC;QAEE,gBAAW,GAAU,EAAE,CAAA;IAMzB,CAAC;IAJC,GAAG,CAAC,EAAO;QACT,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAC3B,CAAC;CAEF;AARD,oCAQC"}
|