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.
Files changed (96) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +92 -267
  3. package/dist/cache/memoryCache.d.ts +4 -0
  4. package/dist/cache/memoryCache.js +32 -0
  5. package/dist/cache/memoryCache.js.map +1 -0
  6. package/dist/core/Azios.d.ts +33 -3
  7. package/dist/core/Azios.js +119 -2
  8. package/dist/core/Azios.js.map +1 -1
  9. package/dist/core/createInstance.js +3 -0
  10. package/dist/core/createInstance.js.map +1 -1
  11. package/dist/core/dispatchRequest.d.ts +1 -2
  12. package/dist/core/dispatchRequest.js +68 -42
  13. package/dist/core/dispatchRequest.js.map +1 -1
  14. package/dist/core/requestStore.d.ts +3 -0
  15. package/dist/core/requestStore.js +16 -0
  16. package/dist/core/requestStore.js.map +1 -0
  17. package/dist/errors/AziosError.d.ts +2 -2
  18. package/dist/errors/AziosError.js +6 -3
  19. package/dist/errors/AziosError.js.map +1 -1
  20. package/dist/helpers/buildURL.d.ts +1 -0
  21. package/dist/helpers/buildURL.js +27 -0
  22. package/dist/helpers/buildURL.js.map +1 -1
  23. package/dist/index.d.ts +15 -0
  24. package/dist/index.js +50 -0
  25. package/dist/index.js.map +1 -1
  26. package/dist/middleware/MiddlewarePipeline.d.ts +54 -0
  27. package/dist/middleware/MiddlewarePipeline.js +122 -0
  28. package/dist/middleware/MiddlewarePipeline.js.map +1 -0
  29. package/dist/middleware/compose.d.ts +1 -0
  30. package/dist/middleware/compose.js +25 -0
  31. package/dist/middleware/compose.js.map +1 -0
  32. package/dist/middleware/middlewareManager.d.ts +4 -0
  33. package/dist/middleware/middlewareManager.js +12 -0
  34. package/dist/middleware/middlewareManager.js.map +1 -0
  35. package/dist/plugins/pluginManager.d.ts +44 -0
  36. package/dist/plugins/pluginManager.js +120 -0
  37. package/dist/plugins/pluginManager.js.map +1 -0
  38. package/dist/rateLimiter/rateLimiter.d.ts +1 -0
  39. package/dist/rateLimiter/rateLimiter.js +31 -0
  40. package/dist/rateLimiter/rateLimiter.js.map +1 -0
  41. package/dist/runtimes/AdapterFactory.d.ts +22 -0
  42. package/dist/runtimes/AdapterFactory.js +43 -0
  43. package/dist/runtimes/AdapterFactory.js.map +1 -0
  44. package/dist/runtimes/HttpAdapter.d.ts +23 -0
  45. package/dist/runtimes/HttpAdapter.js +10 -0
  46. package/dist/runtimes/HttpAdapter.js.map +1 -0
  47. package/dist/runtimes/UniversalHttpAdapter.d.ts +19 -0
  48. package/dist/runtimes/UniversalHttpAdapter.js +114 -0
  49. package/dist/runtimes/UniversalHttpAdapter.js.map +1 -0
  50. package/dist/runtimes/detectRuntime.d.ts +34 -0
  51. package/dist/runtimes/detectRuntime.js +77 -0
  52. package/dist/runtimes/detectRuntime.js.map +1 -0
  53. package/dist/types/config.d.ts +8 -1
  54. package/dist/types/index.d.ts +5 -0
  55. package/dist/types/index.js +22 -0
  56. package/dist/types/index.js.map +1 -0
  57. package/dist/types/middleware.d.ts +16 -0
  58. package/dist/types/middleware.js +3 -0
  59. package/dist/types/middleware.js.map +1 -0
  60. package/dist/types/plugin.d.ts +43 -0
  61. package/dist/types/plugin.js +3 -0
  62. package/dist/types/plugin.js.map +1 -0
  63. package/dist/types/request.d.ts +15 -0
  64. package/dist/types/response.d.ts +23 -1
  65. package/package.json +24 -5
  66. package/src/adapters/httpAdapter.ts +0 -0
  67. package/src/adapters/index.ts +0 -0
  68. package/src/adapters/xhrAdapter.ts +0 -0
  69. package/src/cache/memoryCache.ts +45 -0
  70. package/src/config/mergeConfig.ts +0 -0
  71. package/src/core/Azios.ts +184 -0
  72. package/src/core/createInstance.ts +23 -0
  73. package/src/core/dispatchRequest.ts +111 -0
  74. package/src/core/requestMethods.ts +0 -0
  75. package/src/core/requestStore.ts +13 -0
  76. package/src/errors/AziosError.ts +26 -0
  77. package/src/helpers/buildURL.ts +44 -0
  78. package/src/helpers/normalizeHeaders.ts +0 -0
  79. package/src/helpers/parseHeaders.ts +0 -0
  80. package/src/index.ts +64 -0
  81. package/src/interceptors/InterceptorManager.ts +30 -0
  82. package/src/middleware/MiddlewarePipeline.ts +155 -0
  83. package/src/middleware/compose.ts +33 -0
  84. package/src/middleware/middlewareManager.ts +9 -0
  85. package/src/plugins/pluginManager.ts +143 -0
  86. package/src/rateLimiter/rateLimiter.ts +36 -0
  87. package/src/runtimes/AdapterFactory.ts +46 -0
  88. package/src/runtimes/HttpAdapter.ts +26 -0
  89. package/src/runtimes/UniversalHttpAdapter.ts +136 -0
  90. package/src/runtimes/detectRuntime.ts +85 -0
  91. package/src/types/config.ts +30 -0
  92. package/src/types/index.ts +5 -0
  93. package/src/types/middleware.ts +21 -0
  94. package/src/types/plugin.ts +50 -0
  95. package/src/types/request.ts +39 -0
  96. package/src/types/response.ts +37 -0
@@ -1 +1 @@
1
- {"version":3,"file":"Azios.js","sourceRoot":"","sources":["../../src/core/Azios.ts"],"names":[],"mappings":";;;;;AAAA,wEAA+C;AAE/C,4FAAmE;AAEnE,MAAqB,KAAK;IASxB,YAAY,MAA0B;QAEpC,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;IACH,CAAC;IAED,OAAO,CAAC,MAA0B;QAEhC,MAAM,GAAG,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,GAAG,MAAM,EAAE,CAAA;QAExC,OAAO,IAAA,yBAAe,EAAC,MAAM,CAAC,CAAA;IAChC,CAAC;IAED,GAAG,CAAC,GAAW,EAAE,MAA2B;QAE1C,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;QAEvD,OAAO,IAAI,CAAC,OAAO,CAAC;YAClB,GAAG,MAAM;YACT,MAAM,EAAE,MAAM;YACd,GAAG;YACH,IAAI;SACL,CAAC,CAAA;IACJ,CAAC;CAEF;AA7CD,wBA6CC"}
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,wCAgBC;AApBD,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;YAC5B,QAAgB,CAAC,MAAM,CAAC,GAAI,eAAK,CAAC,SAAiB,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QAC5E,CAAC;IAEH,CAAC,CAAC,CAAA;IAEF,OAAO,QAAQ,CAAA;AAEjB,CAAC"}
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
- import { AziosResponse } from "../types/response";
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 http_1 = __importDefault(require("http"));
8
- const https_1 = __importDefault(require("https"));
9
- const url_1 = require("url");
10
- function dispatchRequest(config) {
11
- return new Promise((resolve, reject) => {
12
- const fullURL = config.baseURL
13
- ? config.baseURL + config.url
14
- : config.url;
15
- const parsedURL = new url_1.URL(fullURL);
16
- const isHttps = parsedURL.protocol === "https:";
17
- const options = {
18
- hostname: parsedURL.hostname,
19
- port: parsedURL.port || (isHttps ? 443 : 80),
20
- path: parsedURL.pathname + parsedURL.search,
21
- method: config.method || "GET",
22
- headers: config.headers || {}
23
- };
24
- const transport = isHttps ? https_1.default : http_1.default;
25
- const req = transport.request(options, res => {
26
- let data = "";
27
- res.on("data", chunk => {
28
- data += chunk;
29
- });
30
- res.on("end", () => {
31
- const response = {
32
- data: data,
33
- status: res.statusCode || 0,
34
- statusText: res.statusMessage || "",
35
- headers: res.headers,
36
- config,
37
- request: req
38
- };
39
- resolve(response);
40
- });
41
- });
42
- req.on("error", err => {
43
- reject(err);
44
- });
45
- if (config.data) {
46
- req.write(JSON.stringify(config.data));
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
- req.end();
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":";;;;;AAOA,kCA2DC;AAlED,gDAAuB;AACvB,kDAAyB;AACzB,6BAAyB;AAKzB,SAAwB,eAAe,CAAC,MAA0B;IAEhE,OAAO,IAAI,OAAO,CAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAEpD,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO;YAC5B,CAAC,CAAC,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,GAAG;YAC7B,CAAC,CAAC,MAAM,CAAC,GAAG,CAAA;QAEd,MAAM,SAAS,GAAG,IAAI,SAAG,CAAC,OAAQ,CAAC,CAAA;QAEnC,MAAM,OAAO,GAAG,SAAS,CAAC,QAAQ,KAAK,QAAQ,CAAA;QAE/C,MAAM,OAAO,GAAG;YACd,QAAQ,EAAE,SAAS,CAAC,QAAQ;YAC5B,IAAI,EAAE,SAAS,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YAC5C,IAAI,EAAE,SAAS,CAAC,QAAQ,GAAG,SAAS,CAAC,MAAM;YAC3C,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,KAAK;YAC9B,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,EAAE;SAC9B,CAAA;QAED,MAAM,SAAS,GAAG,OAAO,CAAC,CAAC,CAAC,eAAK,CAAC,CAAC,CAAC,cAAI,CAAA;QAExC,MAAM,GAAG,GAAG,SAAS,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,EAAE;YAE3C,IAAI,IAAI,GAAG,EAAE,CAAA;YAEb,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE;gBACrB,IAAI,IAAI,KAAK,CAAA;YACf,CAAC,CAAC,CAAA;YAEF,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE;gBAEjB,MAAM,QAAQ,GAAkB;oBAC9B,IAAI,EAAE,IAAI;oBACV,MAAM,EAAE,GAAG,CAAC,UAAU,IAAI,CAAC;oBAC3B,UAAU,EAAE,GAAG,CAAC,aAAa,IAAI,EAAE;oBACnC,OAAO,EAAE,GAAG,CAAC,OAAO;oBACpB,MAAM;oBACN,OAAO,EAAE,GAAG;iBACb,CAAA;gBAED,OAAO,CAAC,QAAQ,CAAC,CAAA;YAEnB,CAAC,CAAC,CAAA;QAEJ,CAAC,CAAC,CAAA;QAEF,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,CAAC,EAAE;YACpB,MAAM,CAAC,GAAG,CAAC,CAAA;QACb,CAAC,CAAC,CAAA;QAEF,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;YAChB,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAA;QACxC,CAAC;QAED,GAAG,CAAC,GAAG,EAAE,CAAA;IAEX,CAAC,CAAC,CAAA;AAEJ,CAAC"}
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,3 @@
1
+ export declare function getPending(key: string): any;
2
+ export declare function setPending(key: string, promise: Promise<any>): void;
3
+ export declare function removePending(key: string): void;
@@ -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 declare class AziosError extends Error {
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: any);
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.AziosError = AziosError;
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":";;;AAAA,MAAa,UAAW,SAAQ,KAAK;IAMnC,YAAY,OAAe,EAAE,MAAW;QACtC,KAAK,CAAC,OAAO,CAAC,CAAA;QACd,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;IACtB,CAAC;CACF;AAVD,gCAUC"}
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;
@@ -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":";;AAAA,0DAAsD;AAEtD,MAAM,KAAK,GAAG,IAAA,+BAAc,EAAC;IAC3B,GAAG,EAAE,EAAE;CACR,CAAC,CAAA;AAEF,kBAAe,KAAK,CAAA"}
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,4 @@
1
+ export default class MiddlewareManager {
2
+ middlewares: any[];
3
+ use(fn: any): void;
4
+ }
@@ -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"}