@astral/mobx-query 1.4.0 → 1.6.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.
@@ -0,0 +1,29 @@
1
+ export type SimplifiedMap<TData> = Pick<Map<string, TData>, 'get' | 'delete' | 'has'> & {
2
+ set: (key: string, value: TData) => void;
3
+ };
4
+ /**
5
+ * Фасад для работы с Map, умеющий в конвертацию хранимого значения в "слабое" состояние и в "сильное"
6
+ * По умолчанию все значения хранятся как "слабые".
7
+ * @enum "Слабое" состояние подразумевает то, что хранимое значение сохранено через WeakRef, следовательно, если в системе не останется ссылок на хранимое значение, сборщик мусора сможет удалить это значение из памяти.
8
+ * @enum "Сильное" состояние подразумевает то, что значение хранится как есть, т.е. даже если в системе не останется других ссылок на хранимое значение, сборщик мусора не сможет удалить его из памяти.
9
+ */
10
+ export declare class AdaptableMap<TData extends {}> implements SimplifiedMap<TData> {
11
+ private strong;
12
+ private weak;
13
+ get: (key: string) => TData | undefined;
14
+ set: (key: string, data: TData) => void;
15
+ delete: (key: string) => boolean;
16
+ has: (key: string) => boolean;
17
+ /**
18
+ * Метод перемещающий значение из одного Map в другой
19
+ */
20
+ private change;
21
+ /**
22
+ * Метод для конвертации значения из "сильного" в "слабое" состояние
23
+ */
24
+ convertToWeak: (key: string) => void;
25
+ /**
26
+ * Метод для конвертации значения из "слабого" в "сильное" состояние
27
+ */
28
+ convertToStrong: (key: string) => void;
29
+ }
@@ -0,0 +1,77 @@
1
+ /**
2
+ * Фасад для работы с Map, хранящим значения как WeakRef
3
+ */
4
+ class WeakRefMap {
5
+ constructor() {
6
+ this.map = new Map();
7
+ this.get = (key) => {
8
+ var _a, _b;
9
+ // Проверка на старые браузеры, не умеющие в WeakRef
10
+ if (!globalThis.WeakRef) {
11
+ return this.map.get(key);
12
+ }
13
+ return (_b = (_a = this.map.get(key)) === null || _a === void 0 ? void 0 : _a.deref) === null || _b === void 0 ? void 0 : _b.call(_a);
14
+ };
15
+ this.set = (key, value) => {
16
+ // Проверка на старые браузеры, не умеющие в WeakRef
17
+ if (!globalThis.WeakRef) {
18
+ this.map.set(key, value);
19
+ }
20
+ else {
21
+ this.map.set(key, new globalThis.WeakRef(value));
22
+ }
23
+ };
24
+ this.delete = (key) => this.map.delete(key);
25
+ this.has = (key) => this.map.has(key);
26
+ }
27
+ }
28
+ /**
29
+ * Фасад для работы с Map, умеющий в конвертацию хранимого значения в "слабое" состояние и в "сильное"
30
+ * По умолчанию все значения хранятся как "слабые".
31
+ * @enum "Слабое" состояние подразумевает то, что хранимое значение сохранено через WeakRef, следовательно, если в системе не останется ссылок на хранимое значение, сборщик мусора сможет удалить это значение из памяти.
32
+ * @enum "Сильное" состояние подразумевает то, что значение хранится как есть, т.е. даже если в системе не останется других ссылок на хранимое значение, сборщик мусора не сможет удалить его из памяти.
33
+ */
34
+ export class AdaptableMap {
35
+ constructor() {
36
+ this.strong = new Map();
37
+ this.weak = new WeakRefMap();
38
+ this.get = (key) => {
39
+ if (this.strong.has(key)) {
40
+ return this.strong.get(key);
41
+ }
42
+ return this.weak.get(key);
43
+ };
44
+ this.set = (key, data) => {
45
+ this.weak.set(key, data);
46
+ };
47
+ this.delete = (key) => {
48
+ // если успешно удалилось в "слабом" хранилище, тогда в "сильном" уже не имеет смысла удалять.
49
+ return this.weak.delete(key) || this.strong.delete(key);
50
+ };
51
+ this.has = (key) => {
52
+ return Boolean(this.weak.get(key)) || this.strong.has(key);
53
+ };
54
+ /**
55
+ * Метод перемещающий значение из одного Map в другой
56
+ */
57
+ this.change = (key, from, to) => {
58
+ const query = this.get(key);
59
+ if (query) {
60
+ from.delete(key);
61
+ to.set(key, query);
62
+ }
63
+ };
64
+ /**
65
+ * Метод для конвертации значения из "сильного" в "слабое" состояние
66
+ */
67
+ this.convertToWeak = (key) => {
68
+ this.change(key, this.strong, this.weak);
69
+ };
70
+ /**
71
+ * Метод для конвертации значения из "слабого" в "сильное" состояние
72
+ */
73
+ this.convertToStrong = (key) => {
74
+ this.change(key, this.weak, this.strong);
75
+ };
76
+ }
77
+ }
@@ -0,0 +1 @@
1
+ export * from './AdaptableMap';
@@ -0,0 +1 @@
1
+ export * from './AdaptableMap';
@@ -1,56 +1,55 @@
1
+ import { type StatusStorage } from '../StatusStorage';
1
2
  /**
2
- * @description испольнитель запроса
3
+ * Испольнитель запроса
3
4
  */
4
5
  type Executor<TResult> = () => Promise<TResult>;
5
6
  /**
6
- * @description вспомогательное хранилище данных, для композиции в Query сторах,
7
+ * Вспомогательное хранилище данных, для композиции в Query сторах,
7
8
  * содержащее флаги загрузки и ошибки,
8
9
  * колбэки на успешный запрос и на ошибку,
9
10
  * данные последней ошибки,
10
11
  * а так же, управляющее синглтон промисом.
11
12
  */
12
13
  export declare class AuxiliaryQuery<TResult, TError = void> {
14
+ private readonly statusStorage;
15
+ private readonly backgroundStatusStorage;
13
16
  /**
14
- * @description флаг обозначающий загрузку данных
17
+ * Флаг, обозначающий простаивание, т.е. запроса еще не было
15
18
  */
16
- isLoading: boolean;
17
- /**
18
- * @description флаг обозначающий, что последний запрос был зафейлен
19
- */
20
- isError: boolean;
21
- /**
22
- * @description данные о последней ошибке
23
- */
24
- error?: TError;
25
- /**
26
- * @description флаг, обозначающий успешность завершения последнего запроса
27
- */
28
- isSuccess: boolean;
19
+ isIdle: boolean;
29
20
  /**
30
- * флаг, обозначающий простаивание, т.е. запроса еще не было
21
+ * Единый промис, для устранения гонки запросов
31
22
  */
32
- isIdle: boolean;
23
+ private unifiedPromise?;
33
24
  /**
34
- * @description единый промис, для устранения гонки запросов
25
+ * Флаг, по которому реактивно определяется необходимость запуска инвалидации
35
26
  */
36
- unifiedPromise?: Promise<TResult>;
37
- constructor();
27
+ isInvalid: boolean;
28
+ constructor(statusStorage: StatusStorage<TError>, backgroundStatusStorage: StatusStorage<TError> | null);
38
29
  /**
39
- * @description метод ответственный за создание единого промиса,
30
+ * Метод ответственный за создание единого промиса,
40
31
  * для устранения гонки запросов
41
32
  */
42
33
  getUnifiedPromise: (executor: Executor<TResult>) => Promise<TResult>;
34
+ private setSuccess;
35
+ private checkBackgroundAndSet;
43
36
  /**
44
- * @description обработчик успешного ответа
37
+ * Обработчик успешного ответа
45
38
  */
46
39
  submitSuccess: () => void;
40
+ private setError;
47
41
  /**
48
- * @description обработчик ошибки
42
+ * Обработчик ошибки
49
43
  */
50
- submitError: (e: TError) => void;
44
+ submitError: (error: TError) => void;
45
+ private setLoading;
51
46
  /**
52
- * @description метод, вызываемый в самом начале запроса, чтобы сбросить флаги в соответствующее значение
47
+ * Метод, вызываемый в самом начале запроса, чтобы сбросить флаги в соответствующее значение
53
48
  */
54
49
  startLoading: () => void;
50
+ /**
51
+ * Метод для инвалидации данных
52
+ */
53
+ invalidate: () => void;
55
54
  }
56
55
  export {};
@@ -1,35 +1,25 @@
1
- import { makeAutoObservable, runInAction } from 'mobx';
1
+ import { action, makeObservable, observable, runInAction } from 'mobx';
2
2
  /**
3
- * @description вспомогательное хранилище данных, для композиции в Query сторах,
3
+ * Вспомогательное хранилище данных, для композиции в Query сторах,
4
4
  * содержащее флаги загрузки и ошибки,
5
5
  * колбэки на успешный запрос и на ошибку,
6
6
  * данные последней ошибки,
7
7
  * а так же, управляющее синглтон промисом.
8
8
  */
9
9
  export class AuxiliaryQuery {
10
- constructor() {
10
+ constructor(statusStorage, backgroundStatusStorage) {
11
+ this.statusStorage = statusStorage;
12
+ this.backgroundStatusStorage = backgroundStatusStorage;
11
13
  /**
12
- * @description флаг обозначающий загрузку данных
14
+ * Флаг, обозначающий простаивание, т.е. запроса еще не было
13
15
  */
14
- this.isLoading = false;
15
- /**
16
- * @description флаг обозначающий, что последний запрос был зафейлен
17
- */
18
- this.isError = false;
19
- /**
20
- * @description данные о последней ошибке
21
- */
22
- this.error = undefined;
23
- /**
24
- * @description флаг, обозначающий успешность завершения последнего запроса
25
- */
26
- this.isSuccess = false;
16
+ this.isIdle = true;
27
17
  /**
28
- * флаг, обозначающий простаивание, т.е. запроса еще не было
18
+ * Флаг, по которому реактивно определяется необходимость запуска инвалидации
29
19
  */
30
- this.isIdle = true;
20
+ this.isInvalid = false;
31
21
  /**
32
- * @description метод ответственный за создание единого промиса,
22
+ * Метод ответственный за создание единого промиса,
33
23
  * для устранения гонки запросов
34
24
  */
35
25
  this.getUnifiedPromise = (executor) => {
@@ -50,36 +40,71 @@ export class AuxiliaryQuery {
50
40
  .finally(() => {
51
41
  this.unifiedPromise = undefined;
52
42
  runInAction(() => {
53
- this.isLoading = false;
43
+ this.statusStorage.isLoading = false;
54
44
  });
55
45
  });
56
46
  }
57
47
  return this.unifiedPromise;
58
48
  };
49
+ this.setSuccess = (storage) => {
50
+ storage.isError = false;
51
+ storage.isSuccess = true;
52
+ };
53
+ this.checkBackgroundAndSet = (setStorage) => {
54
+ if (this.backgroundStatusStorage && this.statusStorage.isSuccess) {
55
+ setStorage(this.backgroundStatusStorage);
56
+ }
57
+ else {
58
+ setStorage(this.statusStorage);
59
+ }
60
+ };
59
61
  /**
60
- * @description обработчик успешного ответа
62
+ * Обработчик успешного ответа
61
63
  */
62
64
  this.submitSuccess = () => {
63
- this.isError = false;
64
- this.isSuccess = true;
65
+ this.checkBackgroundAndSet(this.setSuccess);
66
+ this.isInvalid = false;
67
+ };
68
+ this.setError = (storage, error) => {
69
+ storage.isSuccess = false;
70
+ storage.isError = true;
71
+ storage.error = error;
65
72
  };
66
73
  /**
67
- * @description обработчик ошибки
74
+ * Обработчик ошибки
68
75
  */
69
- this.submitError = (e) => {
70
- this.isSuccess = false;
71
- this.isError = true;
72
- this.error = e;
76
+ this.submitError = (error) => {
77
+ this.checkBackgroundAndSet((storage) => this.setError(storage, error));
78
+ };
79
+ this.setLoading = (storage) => {
80
+ storage.isLoading = true;
81
+ storage.isError = false;
82
+ storage.isSuccess = false;
73
83
  };
74
84
  /**
75
- * @description метод, вызываемый в самом начале запроса, чтобы сбросить флаги в соответствующее значение
85
+ * Метод, вызываемый в самом начале запроса, чтобы сбросить флаги в соответствующее значение
76
86
  */
77
87
  this.startLoading = () => {
78
88
  this.isIdle = false;
79
- this.isLoading = true;
80
- this.isError = false;
81
- this.isSuccess = false;
89
+ this.checkBackgroundAndSet(this.setLoading);
90
+ };
91
+ /**
92
+ * Метод для инвалидации данных
93
+ */
94
+ this.invalidate = () => {
95
+ this.isInvalid = true;
82
96
  };
83
- makeAutoObservable(this, { unifiedPromise: false });
97
+ makeObservable(this, {
98
+ getUnifiedPromise: action,
99
+ isIdle: observable,
100
+ isInvalid: observable,
101
+ submitSuccess: action,
102
+ setSuccess: action,
103
+ setError: action,
104
+ setLoading: action,
105
+ submitError: action,
106
+ startLoading: action,
107
+ invalidate: action,
108
+ });
84
109
  }
85
110
  }
@@ -1,36 +1,33 @@
1
- import type { CacheKey } from '../types';
1
+ import { StorageFactory } from '../StorageFactory';
2
2
  /**
3
- * @description хранилище данных, предназначено для обеспечения единого интерфейса при работе с данными
3
+ * Хранилище данных, предназначено для обеспечения единого интерфейса при работе с данными
4
4
  */
5
5
  export declare class DataStorage<TData> {
6
6
  /**
7
- * @description поле, отвечающее за непосредственное хранение данных
7
+ * Поле, отвечающее за непосредственное хранение данных
8
8
  */
9
9
  private internalData?;
10
10
  constructor();
11
11
  /**
12
- * @description флаг, отображающий наличие данных
12
+ * Флаг, отображающий наличие данных
13
13
  */
14
14
  get hasData(): boolean;
15
15
  /**
16
- * @description метод для установки данных
16
+ * Метод для установки данных
17
17
  */
18
18
  setData: (value: TData) => void;
19
19
  /**
20
- * @description геттер данных
20
+ * Геттер данных
21
21
  */
22
22
  get data(): TData | undefined;
23
23
  }
24
24
  /**
25
- * @description фабрика ответственная за создание и хранение экземляров хранилищ
25
+ * Фабрика ответственная за создание и хранение экземляров хранилищ
26
26
  */
27
- export declare class DataStorageFactory {
28
- /**
29
- * @description Map хранящий инстансы хранилищ по хэшу ключа
30
- */
31
- private storageMap;
27
+ export declare class DataStorageFactory extends StorageFactory<DataStorage<unknown>> {
28
+ constructor();
32
29
  /**
33
- * @description фабричный метод получения/создания инстанса хранилища по ключу
30
+ * Фабричный метод получения/создания инстанса хранилища по ключу
34
31
  */
35
- getStorage: <TData>(key: CacheKey[]) => DataStorage<TData>;
32
+ getStorage: <TData>(keyHash: string) => DataStorage<TData>;
36
33
  }
@@ -1,15 +1,16 @@
1
1
  import { makeAutoObservable } from 'mobx';
2
+ import { StorageFactory } from '../StorageFactory';
2
3
  /**
3
- * @description хранилище данных, предназначено для обеспечения единого интерфейса при работе с данными
4
+ * Хранилище данных, предназначено для обеспечения единого интерфейса при работе с данными
4
5
  */
5
6
  export class DataStorage {
6
7
  constructor() {
7
8
  /**
8
- * @description поле, отвечающее за непосредственное хранение данных
9
+ * Поле, отвечающее за непосредственное хранение данных
9
10
  */
10
11
  this.internalData = undefined;
11
12
  /**
12
- * @description метод для установки данных
13
+ * Метод для установки данных
13
14
  */
14
15
  this.setData = (value) => {
15
16
  this.internalData = value;
@@ -17,36 +18,29 @@ export class DataStorage {
17
18
  makeAutoObservable(this);
18
19
  }
19
20
  /**
20
- * @description флаг, отображающий наличие данных
21
+ * Флаг, отображающий наличие данных
21
22
  */
22
23
  get hasData() {
23
24
  return Boolean(this.internalData);
24
25
  }
25
26
  /**
26
- * @description геттер данных
27
+ * Геттер данных
27
28
  */
28
29
  get data() {
29
30
  return this.internalData;
30
31
  }
31
32
  }
32
33
  /**
33
- * @description фабрика ответственная за создание и хранение экземляров хранилищ
34
+ * Фабрика ответственная за создание и хранение экземляров хранилищ
34
35
  */
35
- export class DataStorageFactory {
36
+ export class DataStorageFactory extends StorageFactory {
36
37
  constructor() {
38
+ super(() => new DataStorage());
37
39
  /**
38
- * @description Map хранящий инстансы хранилищ по хэшу ключа
40
+ * Фабричный метод получения/создания инстанса хранилища по ключу
39
41
  */
40
- this.storageMap = new Map();
41
- /**
42
- * @description фабричный метод получения/создания инстанса хранилища по ключу
43
- */
44
- this.getStorage = (key) => {
45
- const keyHash = JSON.stringify(key);
46
- if (!this.storageMap.has(keyHash)) {
47
- this.storageMap.set(keyHash, new DataStorage());
48
- }
49
- return this.storageMap.get(keyHash);
42
+ this.getStorage = (keyHash) => {
43
+ return this.getInternalStorage(keyHash);
50
44
  };
51
45
  }
52
46
  }
@@ -1,140 +1,135 @@
1
1
  import type { FetchPolicy, QueryBaseActions, Sync, SyncParams } from '../types';
2
+ import { AuxiliaryQuery } from '../AuxiliaryQuery';
2
3
  import type { DataStorage } from '../DataStorage';
4
+ import { QueryContainer } from '../QueryContainer';
5
+ import { type StatusStorage } from '../StatusStorage';
3
6
  export declare const DEFAULT_INFINITE_ITEMS_COUNT = 30;
4
7
  export type InfiniteParams = {
5
8
  offset: number;
6
9
  count: number;
7
10
  };
8
11
  /**
9
- * @description исполнитель запроса, ожидается,
12
+ * Исполнитель запроса, ожидается,
10
13
  * что будет использоваться что-то возвращающее массив данных
11
14
  */
12
15
  export type InfiniteExecutor<TResult> = (params: InfiniteParams) => Promise<Array<TResult>>;
13
- export type InfiniteQueryParams<TResult, TError> = {
16
+ export type InfiniteQueryParams<TResult, TError, TIsBackground extends boolean = false> = {
14
17
  /**
15
- * @description количество запрашиваемых элементов
18
+ * Количество запрашиваемых элементов
16
19
  * @default 30
17
20
  */
18
21
  incrementCount?: number;
19
22
  /**
20
- * @description обработчик ошибки, вызываемый по умолчанию
23
+ * Обработчик ошибки, вызываемый по умолчанию
21
24
  */
22
25
  onError?: SyncParams<TResult, TError>['onError'];
23
26
  /**
24
- * @description флаг, отвечающий за автоматический запрос данных при обращении к полю data
27
+ * Флаг, отвечающий за автоматический запрос данных при обращении к полю data
25
28
  */
26
29
  enabledAutoFetch?: boolean;
30
+ /**
31
+ * Инстанс хранилища основных статусов
32
+ */
33
+ statusStorage: StatusStorage<TError>;
34
+ /**
35
+ * Политика получения данных.
36
+ * @enum cache-first - данные сначала берутся из кеша, если их нет, тогда идет обращение к сети, ответ записывается в кэш
37
+ * @enum network-only - данные всегда берутся из сети, при этом ответ записывается в кэш
38
+ */
27
39
  fetchPolicy?: FetchPolicy;
28
40
  /**
29
- * @description инстанс хранилища данных
41
+ * Инстанс хранилища данных
30
42
  */
31
43
  dataStorage: DataStorage<TResult[]>;
44
+ /**
45
+ * Инстанс хранилища фоновых статусов
46
+ */
47
+ backgroundStatusStorage?: TIsBackground extends true ? StatusStorage<TError> : null | undefined;
48
+ /**
49
+ * Колбэк, вызываемый при успешном завершении запроса, подразумевается использование, для подтверждения валидности данных, чтобы квери не был удален из памяти
50
+ */
51
+ submitValidity?: () => void;
32
52
  };
33
53
  /**
34
- * @description стор для работы с инфинити запросами,
54
+ * Квери для работы с инфинити запросами,
35
55
  * которые должны быть закешированы,
36
56
  */
37
- export declare class InfiniteQuery<TResult, TError = void> implements QueryBaseActions<Array<TResult>, TError> {
38
- /**
39
- * @description инстанс вспомогательного стора
40
- */
41
- private auxiliary;
57
+ export declare class InfiniteQuery<TResult, TError = void, TIsBackground extends boolean = false> extends QueryContainer<TError, AuxiliaryQuery<Array<TResult>, TError>, TIsBackground> implements QueryBaseActions<Array<TResult>, TError> {
58
+ private readonly executor;
42
59
  /**
43
- * @description счетчик отступа для инфинити запроса
60
+ * Счетчик отступа для инфинити запроса
44
61
  */
45
62
  private offset;
46
63
  /**
47
- * @description количество запрашиваемых элементов
64
+ * Количество запрашиваемых элементов
48
65
  */
49
66
  private readonly incrementCount;
50
67
  /**
51
- * @description исполнитель запроса, ожидается,
52
- * что будет использоваться что-то из слоя sources, возвращающее массив данных
53
- */
54
- private executor;
55
- /**
56
- * @description хранилище данных, для обеспечения возможности синхронизации данных между разными инстансами
68
+ * Хранилище данных, для обеспечения возможности синхронизации данных между разными инстансами
57
69
  */
58
70
  private storage;
59
71
  /**
60
- * @description флаг того, что мы достигли предела запрашиваемых элементов
72
+ * Флаг того, что мы достигли предела запрашиваемых элементов
61
73
  */
62
74
  isEndReached: boolean;
63
75
  /**
64
- * @description флаг необходимости выполнить обновления данных
65
- */
66
- private isInvalid;
67
- /**
68
- * @description обработчик ошибки, вызываемый по умолчанию
76
+ * Обработчик ошибки, вызываемый по умолчанию
69
77
  */
70
78
  private defaultOnError?;
71
79
  /**
72
- * @description флаг, отвечающий за автоматический запрос данных при обращении к полю data
80
+ * Флаг, отвечающий за автоматический запрос данных при обращении к полю data
73
81
  */
74
82
  private enabledAutoFetch?;
75
83
  /**
76
- * @description стандартное поведение политики кеширования
84
+ * Стандартное поведение политики кеширования
77
85
  */
78
86
  private readonly defaultFetchPolicy?;
79
- constructor(executor: InfiniteExecutor<TResult>, { incrementCount, onError, enabledAutoFetch, fetchPolicy, dataStorage, }: InfiniteQueryParams<TResult, TError>);
87
+ /**
88
+ * Колбэк, вызываемый при успешном завершении запроса, подразумевается использование, для подтверждения валидности данных, чтобы квери не был удален из памяти
89
+ */
90
+ private readonly submitValidity?;
91
+ constructor(executor: InfiniteExecutor<TResult>, { incrementCount, onError, enabledAutoFetch, fetchPolicy, dataStorage, statusStorage, backgroundStatusStorage, submitValidity, }: InfiniteQueryParams<TResult, TError, TIsBackground>);
80
92
  private get isNetworkOnly();
81
93
  /**
82
- * @description обработчик успешного запроса, проверяет что мы достигли предела
94
+ * Обработчик успешного запроса, проверяет что мы достигли предела
83
95
  */
84
96
  private submitSuccess;
85
97
  /**
86
- * @description форс метод для установки данных
98
+ * Форс метод для установки данных
87
99
  */
88
100
  forceUpdate: (data: TResult[]) => void;
89
101
  /**
90
- * @description метод для обогащения параметров текущими значениями для инфинити
102
+ * Метод для обогащения параметров текущими значениями для инфинити
91
103
  */
92
104
  private get infiniteExecutor();
93
105
  /**
94
- * @description метод для инвалидации данных
106
+ * Метод для инвалидации данных
95
107
  */
96
108
  invalidate: () => void;
97
109
  /**
98
- * @description метод для запроса следующего набора данных
110
+ * Метод для запроса следующего набора данных
99
111
  */
100
112
  fetchMore: () => void;
101
113
  /**
102
- * @description синхронный метод получения данных
114
+ * Синхронный метод получения данных
103
115
  */
104
116
  sync: Sync<Array<TResult>, TError>;
105
117
  /**
106
- * @description метод для переиспользования синхронной логики запроса
118
+ * Метод для переиспользования синхронной логики запроса
107
119
  */
108
120
  private proceedSync;
109
121
  /**
110
- * @description aсинхронный метод получения данных,
122
+ * Асинхронный метод получения данных,
111
123
  * подходит для изменения параметров запроса(фильтров),
112
124
  * при котором будет сброшен offset,
113
125
  * предполагается, что нужно будет самостоятельно обрабатывать ошибку
114
126
  */
115
127
  async: () => Promise<TResult[]>;
116
128
  /**
117
- * @description вычисляемое свойство, содержащее реактивные данные,
129
+ * Вычисляемое свойство, содержащее реактивные данные,
118
130
  * благодаря mobx, при изменении isInvalid, свойство будет вычисляться заново,
119
131
  * следовательно, стриггерится условие невалидности,
120
132
  * и начнется запрос, в результате которого, данные обновятся
121
133
  */
122
134
  get data(): TResult[] | undefined;
123
- /**
124
- * @description флаг загрузки данных
125
- */
126
- get isLoading(): boolean;
127
- /**
128
- * @description флаг обозначающий, что последний запрос был зафейлен
129
- */
130
- get isError(): boolean;
131
- /**
132
- * @description данные о последней ошибке
133
- */
134
- get error(): TError | undefined;
135
- /**
136
- * @description флаг обозначающий, что последний запрос был успешно завершен
137
- */
138
- get isSuccess(): boolean;
139
- get isIdle(): boolean;
140
135
  }