@dxtmisha/functional 1.9.0 → 1.10.1

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 (3) hide show
  1. package/dist/library.d.ts +174 -27
  2. package/dist/library.js +1170 -2476
  3. package/package.json +3 -2
package/dist/library.d.ts CHANGED
@@ -1,6 +1,8 @@
1
+ import { ApiConfig } from '@dxtmisha/functional-basic';
1
2
  import { ApiData } from '@dxtmisha/functional-basic';
2
3
  import { ApiDefaultValue } from '@dxtmisha/functional-basic';
3
4
  import { ApiFetch } from '@dxtmisha/functional-basic';
5
+ import { ApiInstance } from '@dxtmisha/functional-basic';
4
6
  import { ApiMethodItem } from '@dxtmisha/functional-basic';
5
7
  import { ArrayToItem } from '@dxtmisha/functional-basic';
6
8
  import { ComputedGetter } from 'vue';
@@ -10,6 +12,7 @@ import { Datetime } from '@dxtmisha/functional-basic';
10
12
  import { DebuggerOptions } from 'vue';
11
13
  import { ElementOrString } from '@dxtmisha/functional-basic';
12
14
  import { ElementOrWindow } from '@dxtmisha/functional-basic';
15
+ import { ErrorCenterCauseList } from '@dxtmisha/functional-basic';
13
16
  import { EventItem } from '@dxtmisha/functional-basic';
14
17
  import { EventListenerDetail } from '@dxtmisha/functional-basic';
15
18
  import { EventOptions } from '@dxtmisha/functional-basic';
@@ -24,6 +27,7 @@ import { GeoFlagItem } from '@dxtmisha/functional-basic';
24
27
  import { GeoFlagNational } from '@dxtmisha/functional-basic';
25
28
  import { GeoHours } from '@dxtmisha/functional-basic';
26
29
  import { GeoItemFull } from '@dxtmisha/functional-basic';
30
+ import { IconsConfig } from '@dxtmisha/functional-basic';
27
31
  import { ItemList } from '@dxtmisha/functional-basic';
28
32
  import { ItemValue } from '@dxtmisha/functional-basic';
29
33
  import { Meta } from '@dxtmisha/functional-basic';
@@ -31,6 +35,7 @@ import { MetaRobots } from '@dxtmisha/functional-basic';
31
35
  import { NumberOrString } from '@dxtmisha/functional-basic';
32
36
  import { NumberOrStringOrBoolean } from '@dxtmisha/functional-basic';
33
37
  import { NumberOrStringOrDate } from '@dxtmisha/functional-basic';
38
+ import { Plugin as Plugin_2 } from 'vue';
34
39
  import { PropType } from 'vue';
35
40
  import { Ref } from 'vue';
36
41
  import { RouteLocationRaw } from 'vue-router';
@@ -43,6 +48,8 @@ import { SearchListValue } from '@dxtmisha/functional-basic';
43
48
  import { SearchOptions } from '@dxtmisha/functional-basic';
44
49
  import { ShallowRef } from 'vue';
45
50
  import { ToRefs } from 'vue';
51
+ import { TranslateConfig } from '@dxtmisha/functional-basic';
52
+ import { TranslateInstance } from '@dxtmisha/functional-basic';
46
53
  import { TranslateList } from '@dxtmisha/functional-basic';
47
54
  import { Undefined } from '@dxtmisha/functional-basic';
48
55
  import { VNode } from 'vue';
@@ -54,6 +61,7 @@ export declare type ApiManagementGet<Return extends ApiManagementValue, Type ext
54
61
  reactivity?: boolean;
55
62
  conditions?: RefType<boolean>;
56
63
  transformation?: (data: Type) => ApiData<Return>;
64
+ typeData?: ((data: Return) => boolean) | any;
57
65
  unmounted?: boolean;
58
66
  skeleton?: () => Return;
59
67
  };
@@ -745,6 +753,29 @@ export declare abstract class DesignConstructorAbstract<E extends Element, COMP
745
753
  private updateStyles;
746
754
  }
747
755
 
756
+ /**
757
+ * Vue plugin for initializing and configuring global functional services
758
+ * (Api, Translate, Icons, Meta).
759
+ *
760
+ * Vue плагин для инициализации и настройки глобальных функциональных сервисов
761
+ * (Api, Translate, Icons, Meta).
762
+ *
763
+ * @example
764
+ * ```typescript
765
+ * import { createApp } from 'vue'
766
+ * import { dxtFunctionalPlugin } from '@dxtmisha/functional'
767
+ * import router from './router'
768
+ *
769
+ * const app = createApp(App)
770
+ * app.use(dxtFunctionalPlugin, {
771
+ * api: { url: 'https://api.example.com' },
772
+ * metaSuffix: ' | My App',
773
+ * router
774
+ * })
775
+ * ```
776
+ */
777
+ export declare const dxtFunctionalPlugin: Plugin_2;
778
+
748
779
  /**
749
780
  * Global effect scope class.
750
781
  *
@@ -929,6 +960,43 @@ export declare enum ExecuteUseType {
929
960
  local = "local"
930
961
  }
931
962
 
963
+ /**
964
+ * Interface for the functional plugin options /
965
+ * Интерфейс для опций функционального плагина
966
+ */
967
+ export declare interface FunctionalPluginOptions {
968
+ /**
969
+ * Configuration for the API client /
970
+ * Конфигурация для API-клиента
971
+ */
972
+ api?: ApiConfig;
973
+ /**
974
+ * Configuration for the translation service /
975
+ * Конфигурация для сервиса переводов
976
+ */
977
+ translate?: TranslateConfig;
978
+ /**
979
+ * Suffix to be appended to all page titles /
980
+ * Суффикс, который будет добавляться ко всем заголовкам страниц
981
+ */
982
+ metaSuffix?: string;
983
+ /**
984
+ * Configuration for the icon management service /
985
+ * Конфигурация для сервиса управления иконками
986
+ */
987
+ icons?: IconsConfig;
988
+ /**
989
+ * Vue Router instance for global navigation state management /
990
+ * Экземпляр Vue Router для глобального управления состоянием навигации
991
+ */
992
+ router?: Router;
993
+ /**
994
+ * Error causes list for error center /
995
+ * Список причин ошибок для центра ошибок
996
+ */
997
+ errorCauses?: ErrorCenterCauseList;
998
+ }
999
+
932
1000
  /**
933
1001
  * Class for working with Flags.
934
1002
  *
@@ -1868,12 +1936,10 @@ export declare class RouterItemRef {
1868
1936
  * Класс для получения ширины скролла в виде реактивного элемента.
1869
1937
  */
1870
1938
  export declare class ScrollbarWidthRef {
1871
- /**
1872
- * Reactive item.
1873
- *
1874
- * Реактивный элемент.
1875
- */
1939
+ /** Reactive item/ Реактивный элемент */
1876
1940
  readonly item: Ref<boolean | undefined, boolean | undefined>;
1941
+ /** Reactive width/ Реактивная ширина */
1942
+ readonly width: Ref<number, number>;
1877
1943
  /**
1878
1944
  * Constructor
1879
1945
  */
@@ -1945,12 +2011,36 @@ export declare function toRefItem<T>(item: RefOrNormal<T>): Ref<T>;
1945
2011
  /** Utility type to convert union types to intersection types/ Утилитарный тип для преобразования объединенных типов в пересеченные */
1946
2012
  export declare type UnionToIntersection<U> = (U extends any ? (k: U) => void : never) extends (k: infer I) => void ? I : never;
1947
2013
 
1948
- 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, toData?: boolean, options?: ApiOptions): {
2014
+ /**
2015
+ * Use API delete request.
2016
+ *
2017
+ * Использование API delete запроса.
2018
+ * @param path Path to the API endpoint / Путь к endpoint API
2019
+ * @param action Action to perform after the request / Действие, выполняемое после запроса
2020
+ * @param transformation Transformation function / Функция трансформации
2021
+ * @param toData Extract 'data' field from response / Извлечь поле 'data' из ответа
2022
+ * @param options Additional request options / Дополнительные опции запроса
2023
+ * @param apiInstance Api instance / Экземпляр Api
2024
+ * @returns Object with loading state and send method / Объект с состоянием загрузки и методом отправки
2025
+ */
2026
+ 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, toData?: boolean, options?: ApiOptions, apiInstance?: ApiInstance): {
1949
2027
  loading: Ref<boolean, boolean>;
1950
2028
  send(request?: Request | undefined): Promise<Return | undefined>;
1951
2029
  };
1952
2030
 
1953
- 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, toData?: boolean, options?: ApiOptions): {
2031
+ /**
2032
+ * Use API get request.
2033
+ *
2034
+ * Использование API get запроса.
2035
+ * @param path Path to the API endpoint / Путь к endpoint API
2036
+ * @param action Action to perform after the request / Действие, выполняемое после запроса
2037
+ * @param transformation Transformation function / Функция трансформации
2038
+ * @param toData Extract 'data' field from response / Извлечь поле 'data' из ответа
2039
+ * @param options Additional request options / Дополнительные опции запроса
2040
+ * @param apiInstance Api instance / Экземпляр Api
2041
+ * @returns Object with loading state and send method / Объект с состоянием загрузки и методом отправки
2042
+ */
2043
+ 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, toData?: boolean, options?: ApiOptions, apiInstance?: ApiInstance): {
1954
2044
  loading: Ref<boolean, boolean>;
1955
2045
  send(request?: Request | undefined): Promise<Return | undefined>;
1956
2046
  };
@@ -1967,21 +2057,11 @@ export declare function useApiGet<T, Request extends ApiFetch['request'] = ApiFe
1967
2057
  * @param deleteRequest properties for DELETE request / параметры для DELETE запроса
1968
2058
  * @param action additional action to perform on mutations / дополнительное действие при мутациях
1969
2059
  */
1970
- export declare function useApiManagementRef<Return extends ApiManagementValue, FormattersOptions extends FormattersOptionsList, Post extends Record<string, any>, Put extends Record<string, any>, Delete extends Record<string, any>, Type extends ApiManagementValue = Return, Item extends ArrayToItem<Return> = ArrayToItem<Return>, ItemFormatters extends FormattersListColumns<Item, FormattersOptions>[number] = FormattersListColumns<Item, FormattersOptions>[number], Columns extends SearchColumns<ItemFormatters> = []>(propsGet: ApiManagementGet<Return, Type>, formattersOptions?: FormattersOptions, searchOptions?: ApiManagementSearch<Item, Columns>, postRequest?: ApiManagementRequest<Post>, putRequest?: ApiManagementRequest<Put>, deleteRequest?: ApiManagementRequest<Delete>, action?: () => Promise<void> | void): {
2060
+ export declare function useApiManagementRef<Return extends ApiManagementValue, FormattersOptions extends FormattersOptionsList, Post extends Record<string, any>, Put extends Record<string, any>, Delete extends Record<string, any>, Type extends ApiManagementValue = Return, Item extends ArrayToItem<Return> = ArrayToItem<Return>, ItemFormatters extends FormattersListColumns<Item, FormattersOptions>[number] = FormattersListColumns<Item, FormattersOptions>[number], Columns extends SearchColumns<ItemFormatters> = []>(propsGet: ApiManagementGet<Return, Type>, formattersOptions?: FormattersOptions, searchOptions?: ApiManagementSearch<Item, Columns>, postRequest?: ApiManagementRequest<Post>, putRequest?: ApiManagementRequest<Put>, deleteRequest?: ApiManagementRequest<Delete>, action?: () => Promise<void> | void, apiInstance?: ApiInstance): {
2061
+ /** Is valid data (Computed) / Валидность данных (Computed) */
2062
+ isValid: ComputedRef<boolean>;
1971
2063
  /** List data (Computed) / Данные списка (Computed) */
1972
- readonly list: ComputedRef<{
1973
- isSearch: ComputedRef<boolean>;
1974
- search: Ref<string, string>;
1975
- loading: Ref<boolean, boolean>;
1976
- listSearch: ComputedRef<SearchFormatList<Item, Columns>>;
1977
- length: ComputedRef<number>;
1978
- } | undefined extends undefined ? ({
1979
- listFormat: ComputedRef<FormattersReturn<Return, FormattersOptions, ArrayToItem<Return>>>;
1980
- length: ComputedRef<number>;
1981
- } | undefined extends undefined ? (ApiData<Return> | undefined) : FormattersReturn<Return, FormattersOptions>) : SearchFormatList<{
1982
- listFormat: ComputedRef<FormattersReturn<Return, FormattersOptions, ArrayToItem<Return>>>;
1983
- length: ComputedRef<number>;
1984
- } | undefined extends undefined ? Item : ItemFormatters, Columns>>;
2064
+ list: ComputedRef<SearchFormatList<ItemFormatters, Columns>>;
1985
2065
  /** Raw request data (Computed) / Исходные данные запроса (Computed) */
1986
2066
  readonly data: ComputedRef<ApiData<Return> | undefined>;
1987
2067
  /** Length of the list (Computed) / Длина списка (Computed) */
@@ -2041,12 +2121,36 @@ export declare function useApiManagementRef<Return extends ApiManagementValue, F
2041
2121
  sendDelete: (request?: ApiFetch["request"]) => Promise<ApiData<Delete> | undefined>;
2042
2122
  };
2043
2123
 
2044
- 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, toData?: boolean, options?: ApiOptions): {
2124
+ /**
2125
+ * Use API post request.
2126
+ *
2127
+ * Использование API post запроса.
2128
+ * @param path Path to the API endpoint / Путь к endpoint API
2129
+ * @param action Action to perform after the request / Действие, выполняемое после запроса
2130
+ * @param transformation Transformation function / Функция трансформации
2131
+ * @param toData Extract 'data' field from response / Извлечь поле 'data' из ответа
2132
+ * @param options Additional request options / Дополнительные опции запроса
2133
+ * @param apiInstance Api instance / Экземпляр Api
2134
+ * @returns Object with loading state and send method / Объект с состоянием загрузки и методом отправки
2135
+ */
2136
+ 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, toData?: boolean, options?: ApiOptions, apiInstance?: ApiInstance): {
2045
2137
  loading: Ref<boolean, boolean>;
2046
2138
  send(request?: Request | undefined): Promise<Return | undefined>;
2047
2139
  };
2048
2140
 
2049
- 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, toData?: boolean, options?: ApiOptions): {
2141
+ /**
2142
+ * Use API put request.
2143
+ *
2144
+ * Использование API put запроса.
2145
+ * @param path Path to the API endpoint / Путь к endpoint API
2146
+ * @param action Action to perform after the request / Действие, выполняемое после запроса
2147
+ * @param transformation Transformation function / Функция трансформации
2148
+ * @param toData Extract 'data' field from response / Извлечь поле 'data' из ответа
2149
+ * @param options Additional request options / Дополнительные опции запроса
2150
+ * @param apiInstance Api instance / Экземпляр Api
2151
+ * @returns Object with loading state and send method / Объект с состоянием загрузки и методом отправки
2152
+ */
2153
+ 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, toData?: boolean, options?: ApiOptions, apiInstance?: ApiInstance): {
2050
2154
  loading: Ref<boolean, boolean>;
2051
2155
  send(request?: Request | undefined): Promise<Return | undefined>;
2052
2156
  };
@@ -2125,8 +2229,9 @@ export declare interface UseApiRef<R> {
2125
2229
  * @param conditions conditions for executing the request/ условия выполнения запроса
2126
2230
  * @param transformation transforms the received request/ преобразовывает полученный запрос
2127
2231
  * @param unmounted delete data from the cache/ удалить ли данные из кеша
2232
+ * @param apiInstance Api instance / Экземпляр Api
2128
2233
  */
2129
- export declare function useApiRef<R, T = R>(path?: RefOrNormal<string | undefined>, options?: ApiOptions, reactivity?: boolean, conditions?: RefType<boolean>, transformation?: (data: T) => ApiData<R>, unmounted?: boolean): UseApiRef<R>;
2234
+ export declare function useApiRef<R, T = R>(path?: RefOrNormal<string | undefined>, options?: ApiOptions, reactivity?: boolean, conditions?: RefType<boolean>, transformation?: (data: T) => ApiData<R>, unmounted?: boolean, apiInstance?: ApiInstance): UseApiRef<R>;
2130
2235
 
2131
2236
  /**
2132
2237
  * Use api request.
@@ -2138,9 +2243,10 @@ export declare function useApiRef<R, T = R>(path?: RefOrNormal<string | undefine
2138
2243
  * @param transformation Transformation function / Функция трансформации
2139
2244
  * @param toData Extract 'data' field from response / Извлечь поле 'data' из ответа
2140
2245
  * @param options Additional request options / Дополнительные опции запроса
2246
+ * @param apiInstance Api instance / Экземпляр Api
2141
2247
  * @returns Object with loading state and send method / Объект с состоянием загрузки и методом отправки
2142
2248
  */
2143
- 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, toData?: boolean, options?: ApiOptions): {
2249
+ 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, toData?: boolean, options?: ApiOptions, apiInstance?: ApiInstance): {
2144
2250
  loading: Ref<boolean, boolean>;
2145
2251
  /**
2146
2252
  * Send request.
@@ -2237,7 +2343,7 @@ export declare const useLazyRef: (options?: IntersectionObserverInit) => {
2237
2343
  * Получение отслеживаемого элемента.
2238
2344
  * @param element tracked element/ отслеживаемый элемент
2239
2345
  */
2240
- getItem(element: HTMLElement): LazyItem | undefined;
2346
+ getItem(element: HTMLElement): LazyItem;
2241
2347
  /**
2242
2348
  * Adding an element for tracking.
2243
2349
  *
@@ -2275,27 +2381,67 @@ export declare function useLoadingRef(): ShallowRef<boolean, boolean>;
2275
2381
  */
2276
2382
  export declare const useMeta: () => Readonly<{
2277
2383
  meta: Meta;
2384
+ /** Reactive page title (without suffix) / Реактивный заголовок страницы (без суффикса) */
2278
2385
  title: Ref<string, string>;
2386
+ /** Reactive keywords meta tag / Реактивный мета-тег keywords */
2279
2387
  keyword: Ref<string, string>;
2388
+ /** Reactive description meta tag / Реактивный мета-тег description */
2280
2389
  description: Ref<string, string>;
2390
+ /** Reactive author meta tag / Реактивный мета-тег author */
2281
2391
  author: Ref<string, string>;
2392
+ /** Reactive Open Graph / Twitter Card image URL / Реактивный URL изображения для Open Graph / Twitter Card */
2282
2393
  image: Ref<string, string>;
2394
+ /** Reactive canonical URL / Реактивный канонический URL */
2283
2395
  canonical: Ref<string, string>;
2396
+ /** Reactive robots meta tag directive / Реактивная директива мета-тега robots */
2284
2397
  robots: Ref<MetaRobots, MetaRobots>;
2398
+ /** Reactive site name for Open Graph and Twitter Card / Реактивное название сайта для Open Graph и Twitter Card */
2285
2399
  siteName: Ref<string, string>;
2400
+ /**
2401
+ * Generates HTML string for all meta tags (for SSR).
2402
+ *
2403
+ * Генерирует HTML-строку для всех мета-тегов (для SSR).
2404
+ */
2286
2405
  getHtmlMeta: () => string;
2406
+ /**
2407
+ * Sets the suffix for the page title.
2408
+ *
2409
+ * Устанавливает суффикс для заголовка страницы.
2410
+ * @param suffix Suffix to set / Суффикс для установки
2411
+ */
2412
+ setSuffix: (suffix: string) => void;
2287
2413
  } & {
2288
2414
  init(): Readonly<{
2289
2415
  meta: Meta;
2416
+ /** Reactive page title (without suffix) / Реактивный заголовок страницы (без суффикса) */
2290
2417
  title: Ref<string, string>;
2418
+ /** Reactive keywords meta tag / Реактивный мета-тег keywords */
2291
2419
  keyword: Ref<string, string>;
2420
+ /** Reactive description meta tag / Реактивный мета-тег description */
2292
2421
  description: Ref<string, string>;
2422
+ /** Reactive author meta tag / Реактивный мета-тег author */
2293
2423
  author: Ref<string, string>;
2424
+ /** Reactive Open Graph / Twitter Card image URL / Реактивный URL изображения для Open Graph / Twitter Card */
2294
2425
  image: Ref<string, string>;
2426
+ /** Reactive canonical URL / Реактивный канонический URL */
2295
2427
  canonical: Ref<string, string>;
2428
+ /** Reactive robots meta tag directive / Реактивная директива мета-тега robots */
2296
2429
  robots: Ref<MetaRobots, MetaRobots>;
2430
+ /** Reactive site name for Open Graph and Twitter Card / Реактивное название сайта для Open Graph и Twitter Card */
2297
2431
  siteName: Ref<string, string>;
2432
+ /**
2433
+ * Generates HTML string for all meta tags (for SSR).
2434
+ *
2435
+ * Генерирует HTML-строку для всех мета-тегов (для SSR).
2436
+ */
2298
2437
  getHtmlMeta: () => string;
2438
+ /**
2439
+ * Sets the suffix for the page title.
2440
+ *
2441
+ * Устанавливает суффикс для заголовка страницы.
2442
+ * @param suffix Suffix to set / Суффикс для установки
2443
+ */
2444
+ setSuffix: (suffix: string) => void;
2299
2445
  }>;
2300
2446
  destroyExecute?(): void;
2301
2447
  }>;
@@ -2400,8 +2546,9 @@ export declare function useStorageRef<T>(name: string, defaultValue?: T | (() =>
2400
2546
  *
2401
2547
  * Получение переведенного текста по массиву ключей или строке с ключом.
2402
2548
  * @param names a string or an array with keys/ строка или массив с ключами
2549
+ * @param translateInstance a translate instance/ экземпляр перевода
2403
2550
  */
2404
- export declare function useTranslateRef<T extends (string | string[])[]>(names: T): ShallowRef<TranslateList<T>>;
2551
+ export declare function useTranslateRef<T extends (string | string[])[]>(names: T, translateInstance?: TranslateInstance): ShallowRef<TranslateList<T>>;
2405
2552
 
2406
2553
 
2407
2554
  export * from "@dxtmisha/functional-basic";