@hyperttp/interceptors 1.1.0 → 1.1.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,9 +1,17 @@
1
1
  {
2
2
  "name": "@hyperttp/interceptors",
3
- "version": "1.1.0",
3
+ "version": "1.1.5",
4
4
  "type": "module",
5
5
  "main": "./index.js",
6
6
  "types": "./index.d.ts",
7
+ "exports": {
8
+ ".": {
9
+ "types": "./index.d.ts",
10
+ "import": "./index.js",
11
+ "require": "./index.js"
12
+ },
13
+ "./package.json": "./package.json"
14
+ },
7
15
  "keywords": [
8
16
  "hyperttp"
9
17
  ],
@@ -14,7 +22,7 @@
14
22
  "url": "git+https://github.com/IT-IF-OR/hyperttp-interceptors.git"
15
23
  },
16
24
  "peerDependencies": {
17
- "@hyperttp/types": "^0.1.1"
25
+ "@hyperttp/types": "^0.1.5"
18
26
  },
19
27
  "private": false
20
28
  }
package/plugin.d.ts CHANGED
@@ -1,17 +1,33 @@
1
1
  import type { HyperPlugin } from "@hyperttp/types";
2
2
  import { InterceptorManager } from "./utils/InterceptorManager.js";
3
3
  import type { InterceptorOptions } from "./types/interceptors.js";
4
+ /**
5
+ * @en Extends PluginContext to include the interceptor manager instance.
6
+ * @ru Расширяет PluginContext, добавляя экземпляр менеджера интерцепторов.
7
+ */
4
8
  declare module "@hyperttp/types" {
5
9
  interface PluginContext {
10
+ /**
11
+ * @en The active interceptor manager instance.
12
+ * @ru Активный экземпляр менеджера интерцепторов.
13
+ */
6
14
  interceptors?: InterceptorManager;
7
15
  }
16
+ /**
17
+ * @en Extends HttpClientOptions to include interceptor configuration.
18
+ * @ru Расширяет HttpClientOptions, добавляя конфигурацию интерцепторов.
19
+ */
8
20
  interface HttpClientOptions {
21
+ /**
22
+ * @en Interceptor plugin configuration options.
23
+ * @ru Опции конфигурации плагина интерцепторов.
24
+ */
9
25
  interceptors?: InterceptorOptions;
10
26
  }
11
27
  }
12
28
  /**
13
- * @ru Плагин для интеграции кастомных интерцепторов запросов и ответов (Axios-like Interceptors).
14
29
  * @en Plugin for integrating custom request and response interceptors (Axios-like Interceptors).
30
+ * @ru Плагин для интеграции кастомных интерцепторов запросов и ответов (Axios-like Interceptors).
15
31
  * @returns HyperPlugin object instance.
16
32
  */
17
33
  export declare function withInterceptors(): HyperPlugin;
package/plugin.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EAKZ,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAElE,OAAO,QAAQ,iBAAiB,CAAC;IAC/B,UAAU,aAAa;QACrB,YAAY,CAAC,EAAE,kBAAkB,CAAC;KACnC;IAED,UAAU,iBAAiB;QACzB,YAAY,CAAC,EAAE,kBAAkB,CAAC;KACnC;CACF;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,IAAI,WAAW,CAyD9C"}
1
+ {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EAKZ,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAElE;;;GAGG;AACH,OAAO,QAAQ,iBAAiB,CAAC;IAC/B,UAAU,aAAa;QACrB;;;WAGG;QACH,YAAY,CAAC,EAAE,kBAAkB,CAAC;KACnC;IAED;;;OAGG;IACH,UAAU,iBAAiB;QACzB;;;WAGG;QACH,YAAY,CAAC,EAAE,kBAAkB,CAAC;KACnC;CACF;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,IAAI,WAAW,CAsD9C"}
package/plugin.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import { InterceptorManager } from "./utils/InterceptorManager.js";
2
2
  /**
3
- * @ru Плагин для интеграции кастомных интерцепторов запросов и ответов (Axios-like Interceptors).
4
3
  * @en Plugin for integrating custom request and response interceptors (Axios-like Interceptors).
4
+ * @ru Плагин для интеграции кастомных интерцепторов запросов и ответов (Axios-like Interceptors).
5
5
  * @returns HyperPlugin object instance.
6
6
  */
7
7
  export function withInterceptors() {
@@ -9,22 +9,24 @@ export function withInterceptors() {
9
9
  return {
10
10
  name: "hyperttp-interceptors",
11
11
  /**
12
- * @ru Проверяет активацию плагина на основе переданной конфигурации.
13
12
  * @en Evaluates plugin activation based on the provided client configuration.
13
+ * @ru Проверяет активацию плагина на основе переданной конфигурации.
14
+ * @param config - The current client configuration.
15
+ * @returns True if interceptors are enabled.
14
16
  */
15
17
  enabled: (config) => !!config.interceptors?.enabled,
16
18
  /**
17
- * @ru Хук инициализации. Создает менеджер интерцепторов и регистрирует его в контексте ядра.
18
19
  * @en Initialization hook. Creates the interceptor manager and registers it within the core context.
19
- * @param core - Shared plugin orchestration context.
20
+ * @ru Хук инициализации. Создает менеджер интерцепторов и регистрирует его в контексте ядра.
21
+ * @param ctx - Shared plugin orchestration context.
20
22
  */
21
- setup(core) {
23
+ setup(ctx) {
22
24
  manager = new InterceptorManager();
23
- core.interceptors = manager;
25
+ ctx.interceptors = manager;
24
26
  },
25
27
  /**
26
- * @ru Перехватчик фазы запроса. Последовательно применяет все зарегистрированные интерцепторы к конфигурации запроса.
27
28
  * @en Request phase interceptor hook. Sequentially applies all registered interceptors to the request configuration.
29
+ * @ru Перехватчик фазы запроса. Последовательно применяет все зарегистрированные интерцепторы к конфигурации запроса.
28
30
  * @param req - Contextual internal request parameters.
29
31
  */
30
32
  async onRequest(req) {
@@ -32,22 +34,20 @@ export function withInterceptors() {
32
34
  return;
33
35
  const reqResult = await manager.applyRequest(req);
34
36
  if (reqResult) {
35
- // Накатываем изменения на текущую ссылку запроса, если интерцептор вернул обновленный объект
36
37
  Object.assign(req, reqResult);
37
38
  }
38
39
  },
39
40
  /**
40
- * @ru Перехватчик фазы успешного ответа. Пропускает объект ответа через цепочку пользовательских интерцепторов модификации.
41
41
  * @en Response phase interceptor hook. Passes the response object through the chain of custom modification interceptors.
42
+ * @ru Перехватчик фазы успешного ответа. Пропускает объект ответа через цепочку пользовательских интерцепторов модификации.
42
43
  * @param res - Output HTTP client response reference.
43
44
  * @param req - Contextual internal request parameters.
44
45
  */
45
- async onResponse(res, req) {
46
+ async onResponse(res) {
46
47
  if (!manager.hasResponse)
47
48
  return;
48
49
  const resResult = await manager.applyResponse(res);
49
50
  if (resResult) {
50
- // Мутируем объект ответа перед передачей в пользовательский код
51
51
  Object.assign(res, resResult);
52
52
  }
53
53
  },
package/plugin.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAanE;;;;GAIG;AACH,MAAM,UAAU,gBAAgB;IAC9B,IAAI,OAA2B,CAAC;IAEhC,OAAO;QACL,IAAI,EAAE,uBAAuB;QAE7B;;;WAGG;QACH,OAAO,EAAE,CAAC,MAAyB,EAAW,EAAE,CAC9C,CAAC,CAAC,MAAM,CAAC,YAAY,EAAE,OAAO;QAEhC;;;;WAIG;QACH,KAAK,CAAC,IAAmB;YACvB,OAAO,GAAG,IAAI,kBAAkB,EAAE,CAAC;YACnC,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC;QAC9B,CAAC;QAED;;;;WAIG;QACH,KAAK,CAAC,SAAS,CAAC,GAAoB;YAClC,IAAI,CAAC,OAAO,CAAC,UAAU;gBAAE,OAAO;YAEhC,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;YAClD,IAAI,SAAS,EAAE,CAAC;gBACd,6FAA6F;gBAC7F,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;YAChC,CAAC;QACH,CAAC;QAED;;;;;WAKG;QACH,KAAK,CAAC,UAAU,CACd,GAAsB,EACtB,GAAoB;YAEpB,IAAI,CAAC,OAAO,CAAC,WAAW;gBAAE,OAAO;YAEjC,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;YACnD,IAAI,SAAS,EAAE,CAAC;gBACd,gEAAgE;gBAChE,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;YAChC,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AA6BnE;;;;GAIG;AACH,MAAM,UAAU,gBAAgB;IAC9B,IAAI,OAA2B,CAAC;IAEhC,OAAO;QACL,IAAI,EAAE,uBAAuB;QAE7B;;;;;WAKG;QACH,OAAO,EAAE,CAAC,MAAyB,EAAW,EAAE,CAC9C,CAAC,CAAC,MAAM,CAAC,YAAY,EAAE,OAAO;QAEhC;;;;WAIG;QACH,KAAK,CAAC,GAAkB;YACtB,OAAO,GAAG,IAAI,kBAAkB,EAAE,CAAC;YACnC,GAAG,CAAC,YAAY,GAAG,OAAO,CAAC;QAC7B,CAAC;QAED;;;;WAIG;QACH,KAAK,CAAC,SAAS,CAAC,GAAoB;YAClC,IAAI,CAAC,OAAO,CAAC,UAAU;gBAAE,OAAO;YAEhC,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;YAClD,IAAI,SAAS,EAAE,CAAC;gBACd,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;YAChC,CAAC;QACH,CAAC;QAED;;;;;WAKG;QACH,KAAK,CAAC,UAAU,CAAC,GAAsB;YACrC,IAAI,CAAC,OAAO,CAAC,WAAW;gBAAE,OAAO;YAEjC,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;YACnD,IAAI,SAAS,EAAE,CAAC;gBACd,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;YAChC,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -1,31 +1,35 @@
1
1
  import type { InternalRequest, HttpResponse } from "@hyperttp/types";
2
2
  /**
3
- * @ru Опции конфигурации для плагина интерцепторов.
4
3
  * @en Configuration options for the interceptors plugin.
4
+ * @ru Опции конфигурации для плагина интерцепторов.
5
5
  */
6
6
  export interface InterceptorOptions {
7
7
  /**
8
- * @ru Включить обработку интерцепторов для клиента.
9
8
  * @en Enable interceptor processing for the client.
9
+ * @ru Включить обработку интерцепторов для клиента.
10
10
  */
11
11
  enabled?: boolean;
12
12
  }
13
13
  /**
14
+ * @en Request interceptor function signature.
15
+ * Accepts the core internal request object. Can return a modified configuration
16
+ * or `void` (if modifications are applied directly to the passed object reference).
14
17
  * @ru Перехватчик запроса.
15
18
  * Принимает внутренний объект запроса ядра. Может вернуть модифицированный объект
16
19
  * или `void` (если изменения вносятся напрямую в переданный объект по ссылке).
17
- * * @en Request interceptor.
18
- * Accepts the core internal request object. Can return a modified configuration
19
- * or `void` (if modifications are applied directly to the passed object reference).
20
+ * @param config - The internal request configuration.
21
+ * @returns A modified request object, void, or a Promise resolving to either.
20
22
  */
21
23
  export type RequestInterceptor = (config: InternalRequest) => InternalRequest | void | Promise<InternalRequest | void>;
22
24
  /**
25
+ * @en Response interceptor function signature.
26
+ * Accepts a response object with any body layout (`HttpResponse<any>`). Can return
27
+ * a transformed response container or `void` (if the object is mutated in-place).
23
28
  * @ru Перехватчик ответа.
24
29
  * Принимает объект ответа с любым типом тела (`HttpResponse<any>`). Может вернуть
25
30
  * трансформированный объект ответа или `void` (если объект мутирует по ссылке).
26
- * * @en Response interceptor.
27
- * Accepts a response object with any body layout (`HttpResponse<any>`). Can return
28
- * a transformed response container or `void` (if the object is mutated in-place).
31
+ * @param response - The HTTP response object.
32
+ * @returns A modified response object, void, or a Promise resolving to either.
29
33
  */
30
34
  export type ResponseInterceptor = (response: HttpResponse<any>) => HttpResponse<any> | void | Promise<HttpResponse<any> | void>;
31
35
  //# sourceMappingURL=interceptors.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"interceptors.d.ts","sourceRoot":"","sources":["../../src/types/interceptors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAErE;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;;;;;;GAOG;AACH,MAAM,MAAM,kBAAkB,GAAG,CAC/B,MAAM,EAAE,eAAe,KACpB,eAAe,GAAG,IAAI,GAAG,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,CAAC;AAE9D;;;;;;;GAOG;AACH,MAAM,MAAM,mBAAmB,GAAG,CAChC,QAAQ,EAAE,YAAY,CAAC,GAAG,CAAC,KACxB,YAAY,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC"}
1
+ {"version":3,"file":"interceptors.d.ts","sourceRoot":"","sources":["../../src/types/interceptors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAErE;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;;;;;;;;GASG;AACH,MAAM,MAAM,kBAAkB,GAAG,CAC/B,MAAM,EAAE,eAAe,KACpB,eAAe,GAAG,IAAI,GAAG,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,CAAC;AAE9D;;;;;;;;;GASG;AACH,MAAM,MAAM,mBAAmB,GAAG,CAChC,QAAQ,EAAE,YAAY,CAAC,GAAG,CAAC,KACxB,YAAY,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC"}
@@ -1,83 +1,83 @@
1
1
  import { InternalRequest, HttpResponse } from "@hyperttp/types";
2
2
  import { RequestInterceptor, ResponseInterceptor } from "../types/interceptors.js";
3
3
  /**
4
- * @ru Менеджер перехватчиков (интерцепторов) для сквозной обработки запросов и ответов.
5
- * Использует гибридный цикл (fast-path): выполняется синхронно до тех пор, пока не встретит Promise.
6
4
  * @en Interceptor manager for pipeline execution of requests and responses.
7
5
  * Uses a hybrid loop (fast-path): runs synchronously until a Promise is encountered.
6
+ * @ru Менеджер перехватчиков (интерцепторов) для сквозной обработки запросов и ответов.
7
+ * Использует гибридный цикл (fast-path): выполняется синхронно до тех пор, пока не встретит Promise.
8
8
  */
9
9
  export declare class InterceptorManager {
10
10
  /**
11
- * @private
12
- * @ru Массив зарегистрированных перехватчиков запроса.
13
11
  * @en Array of registered request interceptors.
12
+ * @ru Массив зарегистрированных перехватчиков запроса.
13
+ * @private
14
14
  */
15
15
  private requestInterceptors;
16
16
  /**
17
- * @private
18
- * @ru Массив зарегистрированных перехватчиков ответа.
19
17
  * @en Array of registered response interceptors.
18
+ * @ru Массив зарегистрированных перехватчиков ответа.
19
+ * @private
20
20
  */
21
21
  private responseInterceptors;
22
22
  /**
23
- * @ru Флаг наличия активных перехватчиков запроса для быстрого ветвления.
24
23
  * @en Flag indicating presence of active request interceptors for fast branch short-circuiting.
24
+ * @ru Флаг наличия активных перехватчиков запроса для быстрого ветвления.
25
25
  */
26
26
  hasRequest: boolean;
27
27
  /**
28
- * @ru Флаг наличия активных перехватчиков ответа для быстрого ветвления.
29
28
  * @en Flag indicating presence of active response interceptors for fast branch short-circuiting.
29
+ * @ru Флаг наличия активных перехватчиков ответа для быстрого ветвления.
30
30
  */
31
31
  hasResponse: boolean;
32
32
  /**
33
- * @ru Регистрирует новый перехватчик запроса в конвейере.
34
33
  * @en Registers a new request interceptor in the pipeline.
34
+ * @ru Регистрирует новый перехватчик запроса в конвейере.
35
35
  * @param interceptor - Target request interceptor function.
36
36
  */
37
37
  addRequest(interceptor: RequestInterceptor): void;
38
38
  /**
39
- * @ru Регистрирует новый перехватчик ответа в конвейере.
40
39
  * @en Registers a new response interceptor in the pipeline.
40
+ * @ru Регистрирует новый перехватчик ответа в конвейере.
41
41
  * @param interceptor - Target response interceptor function.
42
42
  */
43
43
  addResponse(interceptor: ResponseInterceptor): void;
44
44
  /**
45
- * @ru Последовательно применяет цепочку перехватчиков к конфигурации запроса.
46
45
  * @en Sequentially applies the chain of interceptors to the request configuration.
46
+ * @ru Последовательно применяет цепочку перехватчиков к конфигурации запроса.
47
47
  * @param config - Initial internal request configuration object.
48
48
  * @returns Modified configuration or a Promise resolving to it.
49
49
  */
50
50
  applyRequest(config: InternalRequest): InternalRequest | Promise<InternalRequest>;
51
51
  /**
52
- * @private
53
- * @ru Асинхронный фолбек для обработки оставшейся цепочки запросов после обнаружения Promise.
54
52
  * @en Asynchronous fallback to process the remaining request chain after encountering a Promise.
53
+ * @ru Асинхронный фолбек для обработки оставшейся цепочки запросов после обнаружения Promise.
55
54
  * @param startIndex - Index of the interceptor that returned a Promise.
56
55
  * @param currentPromise - The pending Promise from the current interceptor step.
57
56
  * @param currentResult - Cumulative configuration result before the Promise step.
57
+ * @private
58
58
  */
59
59
  private applyRequestAsync;
60
60
  /**
61
- * @ru Последовательно применяет цепочку перехватчиков к полученному объекту ответа.
62
61
  * @en Sequentially applies the chain of interceptors to the incoming response container.
62
+ * @ru Последовательно применяет цепочку перехватчиков к полученному объекту ответа.
63
63
  * @template T - Type mapping descriptor for the expected response payload body.
64
64
  * @param response - Target HTTP response context wrapper.
65
65
  * @returns Transformed response context or a Promise resolving to it.
66
66
  */
67
67
  applyResponse<T = unknown>(response: HttpResponse<T>): HttpResponse<T> | Promise<HttpResponse<T>>;
68
68
  /**
69
- * @private
70
- * @ru Асинхронный фолбек для обработки оставшейся цепочки ответов после обнаружения Promise.
71
69
  * @en Asynchronous fallback to process the remaining response chain after encountering a Promise.
70
+ * @ru Асинхронный фолбек для обработки оставшейся цепочки ответов после обнаружения Promise.
72
71
  * @template T - Type mapping descriptor for the expected response payload body.
73
72
  * @param startIndex - Index of the interceptor that returned a Promise.
74
73
  * @param currentPromise - The pending Promise from the current interceptor step.
75
74
  * @param currentResult - Cumulative response result before the Promise step.
75
+ * @private
76
76
  */
77
77
  private applyResponseAsync;
78
78
  /**
79
- * @ru Полностью очищает списки зарегистрированных перехватчиков и сбрасывает флаги.
80
79
  * @en Completely flushes internal interceptor registers and resets state indicators.
80
+ * @ru Полностью очищает списки зарегистрированных перехватчиков и сбрасывает флаги.
81
81
  */
82
82
  clear(): void;
83
83
  }
@@ -1 +1 @@
1
- {"version":3,"file":"InterceptorManager.d.ts","sourceRoot":"","sources":["../../src/utils/InterceptorManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAChE,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACpB,MAAM,0BAA0B,CAAC;AAElC;;;;;GAKG;AACH,qBAAa,kBAAkB;IAC7B;;;;OAIG;IACH,OAAO,CAAC,mBAAmB,CAA4B;IAEvD;;;;OAIG;IACH,OAAO,CAAC,oBAAoB,CAA6B;IAEzD;;;OAGG;IACI,UAAU,UAAS;IAE1B;;;OAGG;IACI,WAAW,UAAS;IAE3B;;;;OAIG;IACH,UAAU,CAAC,WAAW,EAAE,kBAAkB,GAAG,IAAI;IAKjD;;;;OAIG;IACH,WAAW,CAAC,WAAW,EAAE,mBAAmB,GAAG,IAAI;IAKnD;;;;;OAKG;IACH,YAAY,CACV,MAAM,EAAE,eAAe,GACtB,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC;IAgB7C;;;;;;;OAOG;YACW,iBAAiB;IAuB/B;;;;;;OAMG;IACH,aAAa,CAAC,CAAC,GAAG,OAAO,EACvB,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC,GACxB,YAAY,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAgB7C;;;;;;;;OAQG;YACW,kBAAkB;IAsBhC;;;OAGG;IACH,KAAK,IAAI,IAAI;CAMd"}
1
+ {"version":3,"file":"InterceptorManager.d.ts","sourceRoot":"","sources":["../../src/utils/InterceptorManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAChE,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACpB,MAAM,0BAA0B,CAAC;AAElC;;;;;GAKG;AACH,qBAAa,kBAAkB;IAC7B;;;;OAIG;IACH,OAAO,CAAC,mBAAmB,CAA4B;IAEvD;;;;OAIG;IACH,OAAO,CAAC,oBAAoB,CAA6B;IAEzD;;;OAGG;IACI,UAAU,UAAS;IAE1B;;;OAGG;IACI,WAAW,UAAS;IAE3B;;;;OAIG;IACH,UAAU,CAAC,WAAW,EAAE,kBAAkB,GAAG,IAAI;IAKjD;;;;OAIG;IACH,WAAW,CAAC,WAAW,EAAE,mBAAmB,GAAG,IAAI;IAKnD;;;;;OAKG;IACH,YAAY,CACV,MAAM,EAAE,eAAe,GACtB,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC;IAa7C;;;;;;;OAOG;YACW,iBAAiB;IAc/B;;;;;;OAMG;IACH,aAAa,CAAC,CAAC,GAAG,OAAO,EACvB,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC,GACxB,YAAY,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAgB7C;;;;;;;;OAQG;YACW,kBAAkB;IAsBhC;;;OAGG;IACH,KAAK,IAAI,IAAI;CAMd"}
@@ -1,35 +1,35 @@
1
1
  /**
2
- * @ru Менеджер перехватчиков (интерцепторов) для сквозной обработки запросов и ответов.
3
- * Использует гибридный цикл (fast-path): выполняется синхронно до тех пор, пока не встретит Promise.
4
2
  * @en Interceptor manager for pipeline execution of requests and responses.
5
3
  * Uses a hybrid loop (fast-path): runs synchronously until a Promise is encountered.
4
+ * @ru Менеджер перехватчиков (интерцепторов) для сквозной обработки запросов и ответов.
5
+ * Использует гибридный цикл (fast-path): выполняется синхронно до тех пор, пока не встретит Promise.
6
6
  */
7
7
  export class InterceptorManager {
8
8
  /**
9
- * @private
10
- * @ru Массив зарегистрированных перехватчиков запроса.
11
9
  * @en Array of registered request interceptors.
10
+ * @ru Массив зарегистрированных перехватчиков запроса.
11
+ * @private
12
12
  */
13
13
  requestInterceptors = [];
14
14
  /**
15
- * @private
16
- * @ru Массив зарегистрированных перехватчиков ответа.
17
15
  * @en Array of registered response interceptors.
16
+ * @ru Массив зарегистрированных перехватчиков ответа.
17
+ * @private
18
18
  */
19
19
  responseInterceptors = [];
20
20
  /**
21
- * @ru Флаг наличия активных перехватчиков запроса для быстрого ветвления.
22
21
  * @en Flag indicating presence of active request interceptors for fast branch short-circuiting.
22
+ * @ru Флаг наличия активных перехватчиков запроса для быстрого ветвления.
23
23
  */
24
24
  hasRequest = false;
25
25
  /**
26
- * @ru Флаг наличия активных перехватчиков ответа для быстрого ветвления.
27
26
  * @en Flag indicating presence of active response interceptors for fast branch short-circuiting.
27
+ * @ru Флаг наличия активных перехватчиков ответа для быстрого ветвления.
28
28
  */
29
29
  hasResponse = false;
30
30
  /**
31
- * @ru Регистрирует новый перехватчик запроса в конвейере.
32
31
  * @en Registers a new request interceptor in the pipeline.
32
+ * @ru Регистрирует новый перехватчик запроса в конвейере.
33
33
  * @param interceptor - Target request interceptor function.
34
34
  */
35
35
  addRequest(interceptor) {
@@ -37,8 +37,8 @@ export class InterceptorManager {
37
37
  this.hasRequest = true;
38
38
  }
39
39
  /**
40
- * @ru Регистрирует новый перехватчик ответа в конвейере.
41
40
  * @en Registers a new response interceptor in the pipeline.
41
+ * @ru Регистрирует новый перехватчик ответа в конвейере.
42
42
  * @param interceptor - Target response interceptor function.
43
43
  */
44
44
  addResponse(interceptor) {
@@ -46,54 +46,42 @@ export class InterceptorManager {
46
46
  this.hasResponse = true;
47
47
  }
48
48
  /**
49
- * @ru Последовательно применяет цепочку перехватчиков к конфигурации запроса.
50
49
  * @en Sequentially applies the chain of interceptors to the request configuration.
50
+ * @ru Последовательно применяет цепочку перехватчиков к конфигурации запроса.
51
51
  * @param config - Initial internal request configuration object.
52
52
  * @returns Modified configuration or a Promise resolving to it.
53
53
  */
54
54
  applyRequest(config) {
55
55
  let result = config;
56
- const len = this.requestInterceptors.length;
57
- for (let i = 0; i < len; i++) {
58
- const nextConfig = this.requestInterceptors[i](result);
59
- if (nextConfig instanceof Promise) {
60
- return this.applyRequestAsync(i, nextConfig, result);
56
+ for (let i = 0; i < this.requestInterceptors.length; i++) {
57
+ const next = this.requestInterceptors[i](result);
58
+ if (next instanceof Promise) {
59
+ return this.applyRequestAsync(i + 1, next, result);
61
60
  }
62
- if (nextConfig)
63
- result = nextConfig;
61
+ if (next)
62
+ result = next;
64
63
  }
65
64
  return result;
66
65
  }
67
66
  /**
68
- * @private
69
- * @ru Асинхронный фолбек для обработки оставшейся цепочки запросов после обнаружения Promise.
70
67
  * @en Asynchronous fallback to process the remaining request chain after encountering a Promise.
68
+ * @ru Асинхронный фолбек для обработки оставшейся цепочки запросов после обнаружения Promise.
71
69
  * @param startIndex - Index of the interceptor that returned a Promise.
72
70
  * @param currentPromise - The pending Promise from the current interceptor step.
73
71
  * @param currentResult - Cumulative configuration result before the Promise step.
72
+ * @private
74
73
  */
75
74
  async applyRequestAsync(startIndex, currentPromise, currentResult) {
76
- let result = currentResult;
77
- const resolved = await currentPromise;
78
- if (resolved)
79
- result = resolved;
80
- const len = this.requestInterceptors.length;
81
- for (let i = startIndex + 1; i < len; i++) {
82
- const nextConfig = this.requestInterceptors[i](result);
83
- if (nextConfig instanceof Promise) {
84
- const res = await nextConfig;
85
- if (res)
86
- result = res;
87
- }
88
- else if (nextConfig) {
89
- result = nextConfig;
90
- }
75
+ let result = (await currentPromise) ?? currentResult;
76
+ for (let i = startIndex; i < this.requestInterceptors.length; i++) {
77
+ const next = this.requestInterceptors[i](result);
78
+ result = (next instanceof Promise ? await next : next) ?? result;
91
79
  }
92
80
  return result;
93
81
  }
94
82
  /**
95
- * @ru Последовательно применяет цепочку перехватчиков к полученному объекту ответа.
96
83
  * @en Sequentially applies the chain of interceptors to the incoming response container.
84
+ * @ru Последовательно применяет цепочку перехватчиков к полученному объекту ответа.
97
85
  * @template T - Type mapping descriptor for the expected response payload body.
98
86
  * @param response - Target HTTP response context wrapper.
99
87
  * @returns Transformed response context or a Promise resolving to it.
@@ -112,13 +100,13 @@ export class InterceptorManager {
112
100
  return result;
113
101
  }
114
102
  /**
115
- * @private
116
- * @ru Асинхронный фолбек для обработки оставшейся цепочки ответов после обнаружения Promise.
117
103
  * @en Asynchronous fallback to process the remaining response chain after encountering a Promise.
104
+ * @ru Асинхронный фолбек для обработки оставшейся цепочки ответов после обнаружения Promise.
118
105
  * @template T - Type mapping descriptor for the expected response payload body.
119
106
  * @param startIndex - Index of the interceptor that returned a Promise.
120
107
  * @param currentPromise - The pending Promise from the current interceptor step.
121
108
  * @param currentResult - Cumulative response result before the Promise step.
109
+ * @private
122
110
  */
123
111
  async applyResponseAsync(startIndex, currentPromise, currentResult) {
124
112
  let result = currentResult;
@@ -140,8 +128,8 @@ export class InterceptorManager {
140
128
  return result;
141
129
  }
142
130
  /**
143
- * @ru Полностью очищает списки зарегистрированных перехватчиков и сбрасывает флаги.
144
131
  * @en Completely flushes internal interceptor registers and resets state indicators.
132
+ * @ru Полностью очищает списки зарегистрированных перехватчиков и сбрасывает флаги.
145
133
  */
146
134
  clear() {
147
135
  this.requestInterceptors = [];
@@ -1 +1 @@
1
- {"version":3,"file":"InterceptorManager.js","sourceRoot":"","sources":["../../src/utils/InterceptorManager.ts"],"names":[],"mappings":"AAMA;;;;;GAKG;AACH,MAAM,OAAO,kBAAkB;IAC7B;;;;OAIG;IACK,mBAAmB,GAAyB,EAAE,CAAC;IAEvD;;;;OAIG;IACK,oBAAoB,GAA0B,EAAE,CAAC;IAEzD;;;OAGG;IACI,UAAU,GAAG,KAAK,CAAC;IAE1B;;;OAGG;IACI,WAAW,GAAG,KAAK,CAAC;IAE3B;;;;OAIG;IACH,UAAU,CAAC,WAA+B;QACxC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC3C,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;IACzB,CAAC;IAED;;;;OAIG;IACH,WAAW,CAAC,WAAgC;QAC1C,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC5C,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;IAC1B,CAAC;IAED;;;;;OAKG;IACH,YAAY,CACV,MAAuB;QAEvB,IAAI,MAAM,GAAG,MAAM,CAAC;QACpB,MAAM,GAAG,GAAG,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC;QAE5C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;YAC7B,MAAM,UAAU,GAAG,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;YAEvD,IAAI,UAAU,YAAY,OAAO,EAAE,CAAC;gBAClC,OAAO,IAAI,CAAC,iBAAiB,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;YACvD,CAAC;YAED,IAAI,UAAU;gBAAE,MAAM,GAAG,UAAU,CAAC;QACtC,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;;;;;;OAOG;IACK,KAAK,CAAC,iBAAiB,CAC7B,UAAkB,EAClB,cAA+C,EAC/C,aAA8B;QAE9B,IAAI,MAAM,GAAG,aAAa,CAAC;QAE3B,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC;QACtC,IAAI,QAAQ;YAAE,MAAM,GAAG,QAAQ,CAAC;QAEhC,MAAM,GAAG,GAAG,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC;QAC5C,KAAK,IAAI,CAAC,GAAG,UAAU,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;YAC1C,MAAM,UAAU,GAAG,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;YACvD,IAAI,UAAU,YAAY,OAAO,EAAE,CAAC;gBAClC,MAAM,GAAG,GAAG,MAAM,UAAU,CAAC;gBAC7B,IAAI,GAAG;oBAAE,MAAM,GAAG,GAAG,CAAC;YACxB,CAAC;iBAAM,IAAI,UAAU,EAAE,CAAC;gBACtB,MAAM,GAAG,UAAU,CAAC;YACtB,CAAC;QACH,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;;;;;OAMG;IACH,aAAa,CACX,QAAyB;QAEzB,IAAI,MAAM,GAAG,QAAQ,CAAC;QACtB,MAAM,GAAG,GAAG,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC;QAE7C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;YAC7B,MAAM,YAAY,GAAG,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;YAE1D,IAAI,YAAY,YAAY,OAAO,EAAE,CAAC;gBACpC,OAAO,IAAI,CAAC,kBAAkB,CAAI,CAAC,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC;YAC7D,CAAC;YAED,IAAI,YAAY;gBAAE,MAAM,GAAG,YAA+B,CAAC;QAC7D,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;;;;;;;OAQG;IACK,KAAK,CAAC,kBAAkB,CAC9B,UAAkB,EAClB,cAA+C,EAC/C,aAA8B;QAE9B,IAAI,MAAM,GAAG,aAAa,CAAC;QAC3B,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC;QACtC,IAAI,QAAQ;YAAE,MAAM,GAAG,QAAQ,CAAC;QAEhC,MAAM,GAAG,GAAG,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC;QAC7C,KAAK,IAAI,CAAC,GAAG,UAAU,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;YAC1C,MAAM,YAAY,GAAG,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;YAC1D,IAAI,YAAY,YAAY,OAAO,EAAE,CAAC;gBACpC,MAAM,GAAG,GAAG,MAAM,YAAY,CAAC;gBAC/B,IAAI,GAAG;oBAAE,MAAM,GAAG,GAAsB,CAAC;YAC3C,CAAC;iBAAM,IAAI,YAAY,EAAE,CAAC;gBACxB,MAAM,GAAG,YAA+B,CAAC;YAC3C,CAAC;QACH,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;;OAGG;IACH,KAAK;QACH,IAAI,CAAC,mBAAmB,GAAG,EAAE,CAAC;QAC9B,IAAI,CAAC,oBAAoB,GAAG,EAAE,CAAC;QAC/B,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QACxB,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;IAC3B,CAAC;CACF"}
1
+ {"version":3,"file":"InterceptorManager.js","sourceRoot":"","sources":["../../src/utils/InterceptorManager.ts"],"names":[],"mappings":"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"}