@dxtmisha/functional 1.11.12 → 1.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/library.js CHANGED
@@ -804,50 +804,71 @@ function ze(t, n, r = !0, i, a, o, s, c = !0, l = e.getItem()) {
804
804
  }
805
805
  //#endregion
806
806
  //#region src/composables/ref/useApiRequest.ts
807
- function Q(r, i = n.post, a, o, s, c = !0, l, u = e.getItem()) {
808
- let d = R(!1), f = K(Ie(l));
809
- return s && t.add(s, U(r), i), {
810
- loading: d,
807
+ function Q({ path: r, method: i = n.post, action: a, transformation: o, validateRequestContract: s, validateResponseContract: c, errorContract: l, toData: u = !0, options: d, apiInstance: f = e.getItem() }) {
808
+ let p = R(!1), m = K(Ie(d));
809
+ return l && t.add(l, U(r), i), {
810
+ loading: p,
811
811
  async send(e) {
812
- d.value = !0;
813
812
  let t;
814
813
  try {
815
- if (t = await u.request({
814
+ if (e && s) {
815
+ let t = s(e);
816
+ if (t && !D(t)) return t;
817
+ }
818
+ if (p.value = !0, t = await f.request({
816
819
  path: U(r),
817
820
  method: i,
818
821
  request: e,
819
- toData: c,
820
- ...f.value
821
- }), t && (o && (t = o(t)), a)) {
822
- let e = a(t);
823
- e instanceof Promise && await e;
822
+ toData: u,
823
+ ...m.value
824
+ }), t) {
825
+ if (c && D(t)) {
826
+ let e = c(t);
827
+ e && !D(e) && (t = e);
828
+ }
829
+ if (o && D(t) && (t = o(t)), a) {
830
+ let e = a(t);
831
+ e instanceof Promise && await e;
832
+ }
824
833
  }
825
834
  } catch (e) {
826
835
  t = void 0;
827
836
  }
828
- return d.value = !1, t;
837
+ return p.value = !1, t;
829
838
  }
830
839
  };
831
840
  }
832
841
  //#endregion
833
842
  //#region src/composables/ref/useApiDelete.ts
834
- function Be(e, t, r, i, a = !0, o, s) {
835
- return Q(e, n.delete, t, r, i, a, o, s);
843
+ function Be(e) {
844
+ return Q({
845
+ ...e,
846
+ method: n.delete
847
+ });
836
848
  }
837
849
  //#endregion
838
850
  //#region src/composables/ref/useApiGet.ts
839
- function Ve(e, t, r, i, a = !0, o, s) {
840
- return Q(e, n.get, t, r, i, a, o, s);
851
+ function Ve(e) {
852
+ return Q({
853
+ ...e,
854
+ method: n.get
855
+ });
841
856
  }
842
857
  //#endregion
843
858
  //#region src/composables/ref/useApiPost.ts
844
- function He(e, t, r, i, a = !0, o, s) {
845
- return Q(e, n.post, t, r, i, a, o, s);
859
+ function He(e) {
860
+ return Q({
861
+ ...e,
862
+ method: n.post
863
+ });
846
864
  }
847
865
  //#endregion
848
866
  //#region src/composables/ref/useApiPut.ts
849
- function Ue(e, t, r, i, a = !0, o, s) {
850
- return Q(e, n.put, t, r, i, a, o, s);
867
+ function Ue(e) {
868
+ return Q({
869
+ ...e,
870
+ method: n.put
871
+ });
851
872
  }
852
873
  //#endregion
853
874
  //#region src/composables/ref/useFormattersRef.ts
@@ -901,7 +922,19 @@ function qe(e, t, n, r, i, a, o, s) {
901
922
  }, t = (t) => async (n) => {
902
923
  A(t) && await S(t(n)), e(n);
903
924
  };
904
- r && (b = He(r.path, t(r.action), r.transformation, r.errorContract, r.toData, r.options, s)), i && (x = Ue(i.path, t(i.action), i.transformation, i.errorContract, i.toData, i.options, s)), a && (C = Be(a.path, t(a.action), a.transformation, a.errorContract, a.toData, a.options, s));
925
+ r && (b = He({
926
+ ...r,
927
+ action: t(r.action),
928
+ apiInstance: s
929
+ })), i && (x = Ue({
930
+ ...i,
931
+ action: t(i.action),
932
+ apiInstance: s
933
+ })), a && (C = Be({
934
+ ...a,
935
+ action: t(a.action),
936
+ apiInstance: s
937
+ }));
905
938
  }
906
939
  let O = I(() => {
907
940
  if (T.value) {
@@ -1281,7 +1314,7 @@ var Ot = { install(t, n = {}) {
1281
1314
  let e = t.config.globalProperties.$router;
1282
1315
  e && X.set(e);
1283
1316
  }
1284
- n.errorCauses && s.addList(n.errorCauses), ht();
1317
+ n.errorCauses && s.addList(n.errorCauses), n.errorHandlers && s.addHandlerList(n.errorHandlers), ht();
1285
1318
  } };
1286
1319
  //#endregion
1287
1320
  //#region src/functions/getInject.ts
@@ -1,28 +1,23 @@
1
- import { ApiInstance, ApiData, ApiFetch, ApiErrorStorageList } from '@dxtmisha/functional-basic';
2
- import { ApiOptions } from '../../types/apiTypes';
3
- import { RefOrNormal } from '../../types/refTypes';
1
+ import { ApiData, ApiFetch } from '@dxtmisha/functional-basic';
2
+ import { UseApiRequestSetup } from './useApiRequest';
4
3
  import { Ref } from 'vue';
4
+ /**
5
+ * Setup interface for API DELETE request.
6
+ *
7
+ * Интерфейс настроек для DELETE запроса API.
8
+ */
9
+ export interface UseApiDeleteSetup<T, Request extends ApiFetch['request'] = ApiFetch['request'], Return extends ApiData<T> = ApiData<T>> extends Omit<UseApiRequestSetup<T, Request, Return>, 'method'> {
10
+ }
5
11
  /**
6
12
  * Use API delete request.
7
13
  * This is a convenient wrapper over `useApiRequest` that pre-fills the DELETE method.
8
14
  *
9
15
  * Использование API delete запроса.
10
16
  * Это удобная обертка над `useApiRequest`, которая предустанавливает метод DELETE.
11
- * @param path Path to the API endpoint / Путь к endpoint API
12
- * @param action Action to perform after the request / Действие, выполняемое после запроса
13
- * @param transformation Transformation function / Функция трансформации
14
- * @param errorContract array of expected error contracts for the request (`ApiErrorStorageList`).
15
- * Highly recommended to add if there is information about possible request errors. Allows you to predefine
16
- * possible errors (by code, status, or custom validation) which will be centrally processed by the application. /
17
- * Массив контрактов ожидаемых ошибок для запроса (`ApiErrorStorageList`). Желательно добавлять, если есть
18
- * информация о возможных ошибках запроса. Позволяет заранее описать возможные ошибки (по коду, статусу или
19
- * кастомной валидации) для централизованной обработки в приложении.
20
- * @param toData Extract 'data' field from response / Извлечь поле 'data' из ответа
21
- * @param options Additional request options / Дополнительные опции запроса
22
- * @param apiInstance Api instance / Экземпляр Api
17
+ * @param setup Configured parameters as a single object / Настроенные параметры в виде единого объекта
23
18
  * @returns Object with loading state and send method / Объект с состоянием загрузки и методом отправки
24
19
  */
25
- export declare function useApiDelete<T, Request extends ApiFetch['request'] = ApiFetch['request'], Return extends ApiData<T> = ApiData<T>>(path?: RefOrNormal<string | undefined>, action?: (data: Return | undefined) => Promise<void> | void, transformation?: (data: T) => Return, errorContract?: ApiErrorStorageList, toData?: boolean, options?: ApiOptions, apiInstance?: ApiInstance): {
20
+ export declare function useApiDelete<T, Request extends ApiFetch['request'] = ApiFetch['request'], Return extends ApiData<T> = ApiData<T>>(setup: UseApiDeleteSetup<T, Request, Return>): {
26
21
  loading: Ref<boolean, boolean>;
27
22
  send(request?: Request | undefined): Promise<Return | undefined>;
28
23
  };
@@ -1,28 +1,23 @@
1
- import { ApiInstance, ApiData, ApiFetch, ApiErrorStorageList } from '@dxtmisha/functional-basic';
2
- import { ApiOptions } from '../../types/apiTypes';
3
- import { RefOrNormal } from '../../types/refTypes';
1
+ import { ApiData, ApiFetch } from '@dxtmisha/functional-basic';
2
+ import { UseApiRequestSetup } from './useApiRequest';
4
3
  import { Ref } from 'vue';
4
+ /**
5
+ * Setup interface for API GET request.
6
+ *
7
+ * Интерфейс настроек для GET запроса API.
8
+ */
9
+ export interface UseApiGetSetup<T, Request extends ApiFetch['request'] = ApiFetch['request'], Return extends ApiData<T> = ApiData<T>> extends Omit<UseApiRequestSetup<T, Request, Return>, 'method'> {
10
+ }
5
11
  /**
6
12
  * Use API get request.
7
13
  * This is a convenient wrapper over `useApiRequest` that pre-fills the GET method.
8
14
  *
9
15
  * Использование API get запроса.
10
16
  * Это удобная обертка над `useApiRequest`, которая предустанавливает метод GET.
11
- * @param path Path to the API endpoint / Путь к endpoint API
12
- * @param action Action to perform after the request / Действие, выполняемое после запроса
13
- * @param transformation Transformation function / Функция трансформации
14
- * @param errorContract array of expected error contracts for the request (`ApiErrorStorageList`).
15
- * Highly recommended to add if there is information about possible request errors. Allows you to predefine
16
- * possible errors (by code, status, or custom validation) which will be centrally processed by the application. /
17
- * Массив контрактов ожидаемых ошибок для запроса (`ApiErrorStorageList`). Желательно добавлять, если есть
18
- * информация о возможных ошибках запроса. Позволяет заранее описать возможные ошибки (по коду, статусу или
19
- * кастомной валидации) для централизованной обработки в приложении.
20
- * @param toData Extract 'data' field from response / Извлечь поле 'data' из ответа
21
- * @param options Additional request options / Дополнительные опции запроса
22
- * @param apiInstance Api instance / Экземпляр Api
17
+ * @param setup Configured parameters as a single object / Настроенные параметры в виде единого объекта
23
18
  * @returns Object with loading state and send method / Объект с состоянием загрузки и методом отправки
24
19
  */
25
- export declare function useApiGet<T, Request extends ApiFetch['request'] = ApiFetch['request'], Return extends ApiData<T> = ApiData<T>>(path?: RefOrNormal<string | undefined>, action?: (data: Return | undefined) => Promise<void> | void, transformation?: (data: T) => Return, errorContract?: ApiErrorStorageList, toData?: boolean, options?: ApiOptions, apiInstance?: ApiInstance): {
20
+ export declare function useApiGet<T, Request extends ApiFetch['request'] = ApiFetch['request'], Return extends ApiData<T> = ApiData<T>>(setup: UseApiGetSetup<T, Request, Return>): {
26
21
  loading: Ref<boolean, boolean>;
27
22
  send(request?: Request | undefined): Promise<Return | undefined>;
28
23
  };
@@ -1,28 +1,23 @@
1
- import { ApiInstance, ApiData, ApiFetch, ApiErrorStorageList } from '@dxtmisha/functional-basic';
2
- import { ApiOptions } from '../../types/apiTypes';
3
- import { RefOrNormal } from '../../types/refTypes';
1
+ import { ApiData, ApiFetch } from '@dxtmisha/functional-basic';
2
+ import { UseApiRequestSetup } from './useApiRequest';
4
3
  import { Ref } from 'vue';
4
+ /**
5
+ * Setup interface for API POST request.
6
+ *
7
+ * Интерфейс настроек для POST запроса API.
8
+ */
9
+ export interface UseApiPostSetup<T, Request extends ApiFetch['request'] = ApiFetch['request'], Return extends ApiData<T> = ApiData<T>> extends Omit<UseApiRequestSetup<T, Request, Return>, 'method'> {
10
+ }
5
11
  /**
6
12
  * Use API post request.
7
13
  * This is a convenient wrapper over `useApiRequest` that pre-fills the POST method.
8
14
  *
9
15
  * Использование API post запроса.
10
16
  * Это удобная обертка над `useApiRequest`, которая предустанавливает метод POST.
11
- * @param path Path to the API endpoint / Путь к endpoint API
12
- * @param action Action to perform after the request / Действие, выполняемое после запроса
13
- * @param transformation Transformation function / Функция трансформации
14
- * @param errorContract array of expected error contracts for the request (`ApiErrorStorageList`).
15
- * Highly recommended to add if there is information about possible request errors. Allows you to predefine
16
- * possible errors (by code, status, or custom validation) which will be centrally processed by the application. /
17
- * Массив контрактов ожидаемых ошибок для запроса (`ApiErrorStorageList`). Желательно добавлять, если есть
18
- * информация о возможных ошибках запроса. Позволяет заранее описать возможные ошибки (по коду, статусу или
19
- * кастомной валидации) для централизованной обработки в приложении.
20
- * @param toData Extract 'data' field from response / Извлечь поле 'data' из ответа
21
- * @param options Additional request options / Дополнительные опции запроса
22
- * @param apiInstance Api instance / Экземпляр Api
17
+ * @param setup Configured parameters as a single object / Настроенные параметры в виде единого объекта
23
18
  * @returns Object with loading state and send method / Объект с состоянием загрузки и методом отправки
24
19
  */
25
- export declare function useApiPost<T, Request extends ApiFetch['request'] = ApiFetch['request'], Return extends ApiData<T> = ApiData<T>>(path?: RefOrNormal<string | undefined>, action?: (data: Return | undefined) => Promise<void> | void, transformation?: (data: T) => Return, errorContract?: ApiErrorStorageList, toData?: boolean, options?: ApiOptions, apiInstance?: ApiInstance): {
20
+ export declare function useApiPost<T, Request extends ApiFetch['request'] = ApiFetch['request'], Return extends ApiData<T> = ApiData<T>>(setup: UseApiPostSetup<T, Request, Return>): {
26
21
  loading: Ref<boolean, boolean>;
27
22
  send(request?: Request | undefined): Promise<Return | undefined>;
28
23
  };
@@ -1,28 +1,23 @@
1
- import { ApiInstance, ApiData, ApiFetch, ApiErrorStorageList } from '@dxtmisha/functional-basic';
2
- import { ApiOptions } from '../../types/apiTypes';
3
- import { RefOrNormal } from '../../types/refTypes';
1
+ import { ApiData, ApiFetch } from '@dxtmisha/functional-basic';
2
+ import { UseApiRequestSetup } from './useApiRequest';
4
3
  import { Ref } from 'vue';
4
+ /**
5
+ * Setup interface for API PUT request.
6
+ *
7
+ * Интерфейс настроек для PUT запроса API.
8
+ */
9
+ export interface UseApiPutSetup<T, Request extends ApiFetch['request'] = ApiFetch['request'], Return extends ApiData<T> = ApiData<T>> extends Omit<UseApiRequestSetup<T, Request, Return>, 'method'> {
10
+ }
5
11
  /**
6
12
  * Use API put request.
7
13
  * This is a convenient wrapper over `useApiRequest` that pre-fills the PUT method.
8
14
  *
9
15
  * Использование API put запроса.
10
16
  * Это удобная обертка над `useApiRequest`, которая предустанавливает метод PUT.
11
- * @param path Path to the API endpoint / Путь к endpoint API
12
- * @param action Action to perform after the request / Действие, выполняемое после запроса
13
- * @param transformation Transformation function / Функция трансформации
14
- * @param errorContract array of expected error contracts for the request (`ApiErrorStorageList`).
15
- * Highly recommended to add if there is information about possible request errors. Allows you to predefine
16
- * possible errors (by code, status, or custom validation) which will be centrally processed by the application. /
17
- * Массив контрактов ожидаемых ошибок для запроса (`ApiErrorStorageList`). Желательно добавлять, если есть
18
- * информация о возможных ошибках запроса. Позволяет заранее описать возможные ошибки (по коду, статусу или
19
- * кастомной валидации) для централизованной обработки в приложении.
20
- * @param toData Extract 'data' field from response / Извлечь поле 'data' из ответа
21
- * @param options Additional request options / Дополнительные опции запроса
22
- * @param apiInstance Api instance / Экземпляр Api
17
+ * @param setup Configured parameters as a single object / Настроенные параметры в виде единого объекта
23
18
  * @returns Object with loading state and send method / Объект с состоянием загрузки и методом отправки
24
19
  */
25
- export declare function useApiPut<T, Request extends ApiFetch['request'] = ApiFetch['request'], Return extends ApiData<T> = ApiData<T>>(path?: RefOrNormal<string | undefined>, action?: (data: Return | undefined) => Promise<void> | void, transformation?: (data: T) => Return, errorContract?: ApiErrorStorageList, toData?: boolean, options?: ApiOptions, apiInstance?: ApiInstance): {
20
+ export declare function useApiPut<T, Request extends ApiFetch['request'] = ApiFetch['request'], Return extends ApiData<T> = ApiData<T>>(setup: UseApiPutSetup<T, Request, Return>): {
26
21
  loading: Ref<boolean, boolean>;
27
22
  send(request?: Request | undefined): Promise<Return | undefined>;
28
23
  };
@@ -1,27 +1,97 @@
1
- import { ApiInstance, ApiMethodItem, ApiData, ApiFetch, ApiErrorStorageList } from '@dxtmisha/functional-basic';
1
+ import { ApiInstance, ApiMethodItem, ApiData, ApiFetch, ApiErrorStorageList, ApiDataValidation } from '@dxtmisha/functional-basic';
2
2
  import { ApiOptions } from '../../types/apiTypes';
3
3
  import { RefOrNormal } from '../../types/refTypes';
4
4
  import { Ref } from 'vue';
5
+ /**
6
+ * Setup interface for API request.
7
+ *
8
+ * Интерфейс настроек для запроса API.
9
+ */
10
+ export interface UseApiRequestSetup<T, Request extends ApiFetch['request'] = ApiFetch['request'], Return extends ApiData<T> = ApiData<T>> {
11
+ /**
12
+ * Path to the API endpoint. Can be a reactive Ref or a normal string.
13
+ *
14
+ * Путь к endpoint API. Может быть реактивным Ref или обычной строкой.
15
+ */
16
+ path?: RefOrNormal<string | undefined>;
17
+ /**
18
+ * HTTP method used for the request (e.g., GET, POST, PUT, DELETE). Defaults to POST.
19
+ *
20
+ * HTTP метод, используемый для запроса (например, GET, POST, PUT, DELETE). По умолчанию POST.
21
+ */
22
+ method?: ApiMethodItem;
23
+ /**
24
+ * Action/callback to perform after the request has successfully completed.
25
+ * Can return a Promise for asynchronous operations.
26
+ *
27
+ * Действие/колбэк, выполняемое после успешного завершения запроса.
28
+ * Может возвращать Promise для асинхронных операций.
29
+ */
30
+ action?: (data: Return | undefined) => Promise<void> | void;
31
+ /**
32
+ * Transformation function that modifies the raw response data before returning it.
33
+ *
34
+ * Функция трансформации, которая преобразует исходные данные ответа перед их возвратом.
35
+ */
36
+ transformation?: (data: T) => Return;
37
+ /**
38
+ * Function to validate the request payload contract. Used to ensure that the API
39
+ * request payload matches the expected structure.
40
+ *
41
+ * Функция для проверки контракта данных запроса. Используется для гарантии того,
42
+ * что отправляемая полезная нагрузка запроса API соответствует ожидаемой структуре.
43
+ */
44
+ validateRequestContract?: (data: Request) => ApiDataValidation & Return;
45
+ /**
46
+ * Function to validate response data contract. Used to ensure that the API
47
+ * response matches the expected structure. Highly recommended to use with `@effect/schema`.
48
+ * It should return `ApiDataValidation` containing a `status` ('success' or 'error')
49
+ * and the parsed data or errors.
50
+ *
51
+ * Функция для проверки контракта данных ответа. Используется для гарантии того, что ответ API соответствует
52
+ * ожидаемой структуре. Настоятельно рекомендуется использовать с `@effect/schema`. Должна возвращать объект
53
+ * `ApiDataValidation`, содержащий `status` ('success' или 'error') и распарсенные данные или ошибки.
54
+ */
55
+ validateResponseContract?: (data: T) => ApiDataValidation & Return;
56
+ /**
57
+ * Array of expected error contracts for the request (`ApiErrorStorageList`).
58
+ * Highly recommended to add if there is information about possible request errors. Allows you to predefine
59
+ * possible errors (by code, status, or custom validation) which will be centrally processed by the application.
60
+ *
61
+ * Массив контрактов ожидаемых ошибок для запроса (`ApiErrorStorageList`). Желательно добавлять, если есть
62
+ * информация о возможных ошибках запроса. Позволяет заранее описать возможные ошибки (по коду, статусу или
63
+ * кастомной валидации) для централизованной обработки в приложении.
64
+ */
65
+ errorContract?: ApiErrorStorageList;
66
+ /**
67
+ * If true, extracts the nested 'data' field from the response object instead of returning the raw envelope.
68
+ * Defaults to true.
69
+ *
70
+ * Если true, извлекает вложенное поле 'data' из объекта ответа вместо возврата исходного конверта.
71
+ * По умолчанию true.
72
+ */
73
+ toData?: boolean;
74
+ /**
75
+ * Additional request options (headers, query params, etc.).
76
+ *
77
+ * Дополнительные опции запроса (заголовки, параметры запроса и т.д.).
78
+ */
79
+ options?: ApiOptions;
80
+ /**
81
+ * Custom Api instance to execute the request on. Defaults to global Api singleton instance.
82
+ *
83
+ * Кастомный экземпляр класса Api для выполнения запроса. По умолчанию используется глобальный синглтон Api.
84
+ */
85
+ apiInstance?: ApiInstance;
86
+ }
5
87
  /**
6
88
  * Use api request.
7
89
  *
8
90
  * Использование запроса api.
9
- * @param path Path to the API endpoint / Путь к endpoint API
10
- * @param method HTTP method / HTTP метод
11
- * @param action Action to perform after the request / Действие, выполняемое после запроса
12
- * @param transformation Transformation function / Функция трансформации
13
- * @param errorContract array of expected error contracts for the request (`ApiErrorStorageList`).
14
- * Highly recommended to add if there is information about possible request errors. Allows you to predefine
15
- * possible errors (by code, status, or custom validation) which will be centrally processed by the application. /
16
- * Массив контрактов ожидаемых ошибок для запроса (`ApiErrorStorageList`). Желательно добавлять, если есть
17
- * информация о возможных ошибках запроса. Позволяет заранее описать возможные ошибки (по коду, статусу или
18
- * кастомной валидации) для централизованной обработки в приложении.
19
- * @param toData Extract 'data' field from response / Извлечь поле 'data' из ответа
20
- * @param options Additional request options / Дополнительные опции запроса
21
- * @param apiInstance Api instance / Экземпляр Api
91
+ * @param setup Configured parameters as a single object / Настроенные параметры в виде единого объекта
22
92
  * @returns Object with loading state and send method / Объект с состоянием загрузки и методом отправки
23
93
  */
24
- export declare function useApiRequest<T, Request extends ApiFetch['request'] = ApiFetch['request'], Return extends ApiData<T> = ApiData<T>>(path?: RefOrNormal<string | undefined>, method?: ApiMethodItem, action?: (data: Return | undefined) => Promise<void> | void, transformation?: (data: T) => Return, errorContract?: ApiErrorStorageList, toData?: boolean, options?: ApiOptions, apiInstance?: ApiInstance): {
94
+ export declare function useApiRequest<T, Request extends ApiFetch['request'] = ApiFetch['request'], Return extends ApiData<T> = ApiData<T>>({ path, method, action, transformation, validateRequestContract, validateResponseContract, errorContract, toData, options, apiInstance }: UseApiRequestSetup<T, Request, Return>): {
25
95
  /** Loading state / Состояние загрузки */
26
96
  loading: Ref<boolean, boolean>;
27
97
  /**
@@ -1,5 +1,5 @@
1
1
  import { Plugin } from 'vue';
2
- import { ApiConfig, ErrorCenterCauseList, IconsConfig, TranslateConfig } from '@dxtmisha/functional-basic';
2
+ import { ApiConfig, ErrorCenterCauseList, ErrorCenterHandlerList, IconsConfig, TranslateConfig } from '@dxtmisha/functional-basic';
3
3
  import { Router } from 'vue-router';
4
4
  /**
5
5
  * Interface for the functional plugin options /
@@ -36,6 +36,11 @@ export interface FunctionalPluginOptions {
36
36
  * Список причин ошибок для центра ошибок
37
37
  */
38
38
  errorCauses?: ErrorCenterCauseList;
39
+ /**
40
+ * Error handlers list for error center /
41
+ * Список обработчиков ошибок для центра ошибок
42
+ */
43
+ errorHandlers?: ErrorCenterHandlerList;
39
44
  }
40
45
  /**
41
46
  * Vue plugin for initializing and configuring global functional services
@@ -54,13 +54,17 @@ export type ApiManagementSearch<T extends SearchItem, K extends SearchColumns<T>
54
54
  *
55
55
  * Конфигурация для запросов мутации (POST, PUT, DELETE).
56
56
  */
57
- export type ApiManagementRequest<T, Return extends ApiData<T> = ApiData<T>> = {
57
+ export type ApiManagementRequest<T, Request extends ApiFetch['request'] = ApiFetch['request'], Return extends ApiData<T> = ApiData<T>> = {
58
58
  /** Target API endpoint path / Целевой путь к API */
59
59
  path?: RefOrNormal<string | undefined>;
60
60
  /** Action to perform after a successful request / Действие после успешного выполнения запроса */
61
61
  action?: (data: Return | undefined) => Promise<void> | void;
62
62
  /** Transformation before sending data / Трансформация перед отправкой данных */
63
63
  transformation?: (data: T) => Return;
64
+ /** Request contract validation function / Функция валидации контракта запроса */
65
+ validateRequestContract?: (data: Request) => ApiDataValidation & Return;
66
+ /** Response contract validation function / Функция валидации контракта ответа */
67
+ validateResponseContract?: (data: T) => ApiDataValidation & Return;
64
68
  /** Storage of response error contracts / Хранилище контрактов ошибок ответа */
65
69
  errorContract?: ApiErrorStorageList;
66
70
  /** Whether to wrap the payload in a 'data' property / Обертывать ли полезную нагрузку в свойство 'data' */
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@dxtmisha/functional",
3
3
  "private": false,
4
- "version": "1.11.12",
4
+ "version": "1.12.0",
5
5
  "type": "module",
6
6
  "description": "A comprehensive library of utilities, base classes, and Vue 3 composables for reactive web development. Extends @dxtmisha/functional-basic with Composition API.",
7
7
  "keywords": [