aziosxjs 0.4.1 → 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 (80) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +92 -267
  3. package/dist/cache/memoryCache.d.ts +1 -0
  4. package/dist/cache/memoryCache.js +7 -1
  5. package/dist/cache/memoryCache.js.map +1 -1
  6. package/dist/core/Azios.d.ts +33 -8
  7. package/dist/core/Azios.js +68 -2
  8. package/dist/core/Azios.js.map +1 -1
  9. package/dist/core/dispatchRequest.js +10 -75
  10. package/dist/core/dispatchRequest.js.map +1 -1
  11. package/dist/index.d.ts +15 -0
  12. package/dist/index.js +50 -0
  13. package/dist/index.js.map +1 -1
  14. package/dist/middleware/MiddlewarePipeline.d.ts +54 -0
  15. package/dist/middleware/MiddlewarePipeline.js +122 -0
  16. package/dist/middleware/MiddlewarePipeline.js.map +1 -0
  17. package/dist/middleware/compose.d.ts +1 -0
  18. package/dist/middleware/compose.js +25 -0
  19. package/dist/middleware/compose.js.map +1 -0
  20. package/dist/middleware/middlewareManager.d.ts +4 -0
  21. package/dist/middleware/middlewareManager.js +12 -0
  22. package/dist/middleware/middlewareManager.js.map +1 -0
  23. package/dist/plugins/pluginManager.d.ts +44 -0
  24. package/dist/plugins/pluginManager.js +120 -0
  25. package/dist/plugins/pluginManager.js.map +1 -0
  26. package/dist/runtimes/AdapterFactory.d.ts +22 -0
  27. package/dist/runtimes/AdapterFactory.js +43 -0
  28. package/dist/runtimes/AdapterFactory.js.map +1 -0
  29. package/dist/runtimes/HttpAdapter.d.ts +23 -0
  30. package/dist/runtimes/HttpAdapter.js +10 -0
  31. package/dist/runtimes/HttpAdapter.js.map +1 -0
  32. package/dist/runtimes/UniversalHttpAdapter.d.ts +19 -0
  33. package/dist/runtimes/UniversalHttpAdapter.js +114 -0
  34. package/dist/runtimes/UniversalHttpAdapter.js.map +1 -0
  35. package/dist/runtimes/detectRuntime.d.ts +34 -0
  36. package/dist/runtimes/detectRuntime.js +77 -0
  37. package/dist/runtimes/detectRuntime.js.map +1 -0
  38. package/dist/types/index.d.ts +5 -0
  39. package/dist/types/index.js +22 -0
  40. package/dist/types/index.js.map +1 -0
  41. package/dist/types/middleware.d.ts +16 -0
  42. package/dist/types/middleware.js +3 -0
  43. package/dist/types/middleware.js.map +1 -0
  44. package/dist/types/plugin.d.ts +43 -0
  45. package/dist/types/plugin.js +3 -0
  46. package/dist/types/plugin.js.map +1 -0
  47. package/dist/types/request.d.ts +5 -0
  48. package/dist/types/response.d.ts +23 -1
  49. package/package.json +24 -5
  50. package/src/adapters/httpAdapter.ts +0 -0
  51. package/src/adapters/index.ts +0 -0
  52. package/src/adapters/xhrAdapter.ts +0 -0
  53. package/src/cache/memoryCache.ts +45 -0
  54. package/src/config/mergeConfig.ts +0 -0
  55. package/src/core/Azios.ts +184 -0
  56. package/src/core/createInstance.ts +23 -0
  57. package/src/core/dispatchRequest.ts +111 -0
  58. package/src/core/requestMethods.ts +0 -0
  59. package/src/core/requestStore.ts +13 -0
  60. package/src/errors/AziosError.ts +26 -0
  61. package/src/helpers/buildURL.ts +44 -0
  62. package/src/helpers/normalizeHeaders.ts +0 -0
  63. package/src/helpers/parseHeaders.ts +0 -0
  64. package/src/index.ts +64 -0
  65. package/src/interceptors/InterceptorManager.ts +30 -0
  66. package/src/middleware/MiddlewarePipeline.ts +155 -0
  67. package/src/middleware/compose.ts +33 -0
  68. package/src/middleware/middlewareManager.ts +9 -0
  69. package/src/plugins/pluginManager.ts +143 -0
  70. package/src/rateLimiter/rateLimiter.ts +36 -0
  71. package/src/runtimes/AdapterFactory.ts +46 -0
  72. package/src/runtimes/HttpAdapter.ts +26 -0
  73. package/src/runtimes/UniversalHttpAdapter.ts +136 -0
  74. package/src/runtimes/detectRuntime.ts +85 -0
  75. package/src/types/config.ts +30 -0
  76. package/src/types/index.ts +5 -0
  77. package/src/types/middleware.ts +21 -0
  78. package/src/types/plugin.ts +50 -0
  79. package/src/types/request.ts +39 -0
  80. package/src/types/response.ts +37 -0
@@ -4,88 +4,23 @@ 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
- const buildURL_1 = __importDefault(require("../helpers/buildURL"));
11
- const AziosError_1 = __importDefault(require("../errors/AziosError"));
7
+ const AdapterFactory_1 = __importDefault(require("../runtimes/AdapterFactory"));
12
8
  const requestStore_1 = require("./requestStore");
13
9
  const memoryCache_1 = require("../cache/memoryCache");
14
10
  const rateLimiter_1 = require("../rateLimiter/rateLimiter");
11
+ /**
12
+ * Sleep utility for retry delays
13
+ */
15
14
  function delay(ms) {
16
15
  return new Promise(resolve => setTimeout(resolve, ms));
17
16
  }
17
+ /**
18
+ * Make a single HTTP request using the universal adapter
19
+ * This ensures cross-runtime compatibility
20
+ */
18
21
  async function makeRequest(config) {
19
- return new Promise((resolve, reject) => {
20
- let url = config.baseURL
21
- ? config.baseURL + config.url
22
- : config.url;
23
- url = (0, buildURL_1.default)(url, config.params);
24
- const parsedURL = new url_1.URL(url);
25
- const isHttps = parsedURL.protocol === "https:";
26
- const transport = isHttps ? https_1.default : http_1.default;
27
- const options = {
28
- hostname: parsedURL.hostname,
29
- port: parsedURL.port || (isHttps ? 443 : 80),
30
- path: parsedURL.pathname + parsedURL.search,
31
- method: config.method || "GET",
32
- headers: {
33
- "Content-Type": "application/json",
34
- ...config.headers
35
- }
36
- };
37
- const req = transport.request(options, res => {
38
- // -------------------------
39
- // TIMEOUT SUPPORT
40
- // -------------------------
41
- if (config.timeout) {
42
- req.setTimeout(config.timeout, () => {
43
- req.destroy();
44
- reject(new AziosError_1.default("Request timeout", "TIMEOUT", config, req));
45
- });
46
- }
47
- // -------------------------
48
- // ABORT SUPPORT
49
- // -------------------------
50
- if (config.signal) {
51
- const abortHandler = () => {
52
- req.destroy();
53
- reject(new AziosError_1.default("Request aborted", "ABORTED", config, req));
54
- };
55
- config.signal.addEventListener("abort", abortHandler, { once: true });
56
- }
57
- let rawData = "";
58
- res.on("data", chunk => {
59
- rawData += chunk;
60
- });
61
- res.on("end", () => {
62
- let responseData = rawData;
63
- try {
64
- responseData = JSON.parse(rawData);
65
- }
66
- catch (_a) { }
67
- const response = {
68
- data: responseData,
69
- status: res.statusCode || 0,
70
- statusText: res.statusMessage || "",
71
- headers: res.headers,
72
- config,
73
- request: req
74
- };
75
- resolve(response);
76
- });
77
- });
78
- req.on("error", err => {
79
- reject(new AziosError_1.default(err.message, "NETWORK_ERROR", config, req));
80
- });
81
- if (config.data) {
82
- const body = typeof config.data === "string"
83
- ? config.data
84
- : JSON.stringify(config.data);
85
- req.write(body);
86
- }
87
- req.end();
88
- });
22
+ const adapter = AdapterFactory_1.default.getAdapter();
23
+ return adapter.request(config);
89
24
  }
90
25
  async function dispatchRequest(config) {
91
26
  const requestKey = `${config.method}-${config.url}-${JSON.stringify(config.params)}`;
@@ -1 +1 @@
1
- {"version":3,"file":"dispatchRequest.js","sourceRoot":"","sources":["../../src/core/dispatchRequest.ts"],"names":[],"mappings":"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"}
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"}
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"}
@@ -0,0 +1,44 @@
1
+ import type { AziosPlugin } from '../types/plugin';
2
+ import type { AziosInstance } from '../types/request';
3
+ import type { AziosRequestConfig } from '../types/config';
4
+ import type { AziosResponse } from '../types/response';
5
+ /**
6
+ * PluginManager handles plugin lifecycle and hook execution
7
+ * Production-grade plugin system with error handling and validation
8
+ */
9
+ export default class PluginManager {
10
+ private plugins;
11
+ /**
12
+ * Install a plugin and trigger its onInstall hook
13
+ * @throws Error if plugin name is already registered
14
+ */
15
+ install(plugin: AziosPlugin, instance: AziosInstance): Promise<void>;
16
+ /**
17
+ * Uninstall a plugin and trigger its onUninstall hook
18
+ */
19
+ uninstall(pluginName: string, instance: AziosInstance): Promise<void>;
20
+ /**
21
+ * Execute beforeRequest hooks from all plugins
22
+ */
23
+ executeBeforeRequestHooks(config: AziosRequestConfig): Promise<AziosRequestConfig>;
24
+ /**
25
+ * Execute afterResponse hooks from all plugins
26
+ */
27
+ executeAfterResponseHooks(response: AziosResponse): Promise<AziosResponse>;
28
+ /**
29
+ * Execute onError hooks from all plugins
30
+ */
31
+ executeOnErrorHooks(error: Error): Promise<Error>;
32
+ /**
33
+ * Get all currently installed plugins
34
+ */
35
+ getInstalledPlugins(): AziosPlugin[];
36
+ /**
37
+ * Check if a plugin is installed
38
+ */
39
+ isPluginInstalled(name: string): boolean;
40
+ /**
41
+ * Clear all plugins
42
+ */
43
+ clear(): void;
44
+ }
@@ -0,0 +1,120 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ /**
4
+ * PluginManager handles plugin lifecycle and hook execution
5
+ * Production-grade plugin system with error handling and validation
6
+ */
7
+ class PluginManager {
8
+ constructor() {
9
+ this.plugins = {};
10
+ }
11
+ /**
12
+ * Install a plugin and trigger its onInstall hook
13
+ * @throws Error if plugin name is already registered
14
+ */
15
+ async install(plugin, instance) {
16
+ if (this.plugins[plugin.name]) {
17
+ throw new Error(`Plugin "${plugin.name}" is already installed`);
18
+ }
19
+ this.plugins[plugin.name] = plugin;
20
+ try {
21
+ if (plugin.hooks.onInstall) {
22
+ await plugin.hooks.onInstall(instance);
23
+ }
24
+ }
25
+ catch (err) {
26
+ // Rollback on error
27
+ delete this.plugins[plugin.name];
28
+ throw err;
29
+ }
30
+ }
31
+ /**
32
+ * Uninstall a plugin and trigger its onUninstall hook
33
+ */
34
+ async uninstall(pluginName, instance) {
35
+ const plugin = this.plugins[pluginName];
36
+ if (!plugin) {
37
+ throw new Error(`Plugin "${pluginName}" is not installed`);
38
+ }
39
+ try {
40
+ if (plugin.hooks.onUninstall) {
41
+ await plugin.hooks.onUninstall(instance);
42
+ }
43
+ }
44
+ finally {
45
+ delete this.plugins[pluginName];
46
+ }
47
+ }
48
+ /**
49
+ * Execute beforeRequest hooks from all plugins
50
+ */
51
+ async executeBeforeRequestHooks(config) {
52
+ let result = config;
53
+ for (const plugin of Object.values(this.plugins)) {
54
+ if (plugin.hooks.beforeRequest) {
55
+ try {
56
+ result = await plugin.hooks.beforeRequest(result);
57
+ }
58
+ catch (err) {
59
+ throw new Error(`Plugin "${plugin.name}" beforeRequest hook failed: ${err instanceof Error ? err.message : String(err)}`);
60
+ }
61
+ }
62
+ }
63
+ return result;
64
+ }
65
+ /**
66
+ * Execute afterResponse hooks from all plugins
67
+ */
68
+ async executeAfterResponseHooks(response) {
69
+ let result = response;
70
+ for (const plugin of Object.values(this.plugins)) {
71
+ if (plugin.hooks.afterResponse) {
72
+ try {
73
+ result = await plugin.hooks.afterResponse(result);
74
+ }
75
+ catch (err) {
76
+ throw new Error(`Plugin "${plugin.name}" afterResponse hook failed: ${err instanceof Error ? err.message : String(err)}`);
77
+ }
78
+ }
79
+ }
80
+ return result;
81
+ }
82
+ /**
83
+ * Execute onError hooks from all plugins
84
+ */
85
+ async executeOnErrorHooks(error) {
86
+ let result = error;
87
+ for (const plugin of Object.values(this.plugins)) {
88
+ if (plugin.hooks.onError) {
89
+ try {
90
+ result = await plugin.hooks.onError(result);
91
+ }
92
+ catch (err) {
93
+ // Log but don't throw - error handlers should not crash
94
+ console.warn(`Plugin "${plugin.name}" onError hook failed:`, err instanceof Error ? err.message : String(err));
95
+ }
96
+ }
97
+ }
98
+ return result;
99
+ }
100
+ /**
101
+ * Get all currently installed plugins
102
+ */
103
+ getInstalledPlugins() {
104
+ return Object.values(this.plugins);
105
+ }
106
+ /**
107
+ * Check if a plugin is installed
108
+ */
109
+ isPluginInstalled(name) {
110
+ return name in this.plugins;
111
+ }
112
+ /**
113
+ * Clear all plugins
114
+ */
115
+ clear() {
116
+ this.plugins = {};
117
+ }
118
+ }
119
+ exports.default = PluginManager;
120
+ //# sourceMappingURL=pluginManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pluginManager.js","sourceRoot":"","sources":["../../src/plugins/pluginManager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import type { HttpAdapter } from './HttpAdapter';
2
+ import { RuntimeType } from './detectRuntime';
3
+ /**
4
+ * Adapter factory for selecting the appropriate HTTP adapter
5
+ * Uses universal Fetch API when available with fallbacks for specific runtimes
6
+ */
7
+ export declare class AdapterFactory {
8
+ private static adapters;
9
+ /**
10
+ * Get or create adapter for current runtime
11
+ */
12
+ static getAdapter(): HttpAdapter;
13
+ /**
14
+ * Register custom adapter for specific runtime
15
+ */
16
+ static registerAdapter(runtime: RuntimeType, adapter: HttpAdapter): void;
17
+ /**
18
+ * Clear adapter cache
19
+ */
20
+ static clearCache(): void;
21
+ }
22
+ export default AdapterFactory;