@astral/mobx-query 1.5.0 → 1.6.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.
@@ -13,27 +13,27 @@ export declare abstract class QueryContainer<TError, TAuxiliary extends QueryCon
13
13
  protected readonly auxiliary: TAuxiliary;
14
14
  protected constructor(statusStorage: StatusStorage<TError>, backgroundStatusStorage: StatusStorage<TError> | null, auxiliary: TAuxiliary);
15
15
  /**
16
- * флаг загрузки данных
16
+ * Флаг загрузки данных
17
17
  */
18
18
  get isLoading(): boolean;
19
19
  /**
20
- * флаг обозначающий, что последний запрос был зафейлен
20
+ * Флаг обозначающий, что последний запрос был зафейлен
21
21
  */
22
22
  get isError(): boolean;
23
23
  /**
24
- * данные о последней ошибке
24
+ * Данные о последней ошибке
25
25
  */
26
26
  get error(): TError | undefined;
27
27
  /**
28
- * флаг обозначающий, что последний запрос был успешно завершен
28
+ * Флаг обозначающий, что последний запрос был успешно завершен
29
29
  */
30
30
  get isSuccess(): boolean;
31
31
  /**
32
- * флаг, обозначающий простаивание, т.е. запроса еще не было
32
+ * Флаг, обозначающий простаивание, т.е. запроса еще не было
33
33
  */
34
34
  get isIdle(): boolean;
35
35
  /**
36
- * статусы, изменяющиеся после первого успешного запроса в режиме isBackground: true
36
+ * Статусы, изменяющиеся после первого успешного запроса в режиме isBackground: true
37
37
  * @example
38
38
  * const query = mobxQuery.createQuery(
39
39
  * ['some cache key'],
@@ -50,8 +50,8 @@ export declare abstract class QueryContainer<TError, TAuxiliary extends QueryCon
50
50
  * console.log(query.isLoading); // не изменялся
51
51
  * console.log(query.isSuccess); // остался неизменным - true
52
52
  *
53
- * console.log(query.backgroundStatus.isLoading); // переключался в true на момент обновления
54
- * console.log(query.backgroundStatus.isSuccess); // true
53
+ * console.log(query.background.isLoading); // переключался в true на момент обновления
54
+ * console.log(query.background.isSuccess); // true
55
55
  *
56
56
  * @exception isBackground:false (а так же по умолчанию) background не доступен, и равен null
57
57
  * @exception Mutation не доступен в мутации и равен null
@@ -17,37 +17,37 @@ export class QueryContainer {
17
17
  });
18
18
  }
19
19
  /**
20
- * флаг загрузки данных
20
+ * Флаг загрузки данных
21
21
  */
22
22
  get isLoading() {
23
23
  return this.statusStorage.isLoading;
24
24
  }
25
25
  /**
26
- * флаг обозначающий, что последний запрос был зафейлен
26
+ * Флаг обозначающий, что последний запрос был зафейлен
27
27
  */
28
28
  get isError() {
29
29
  return this.statusStorage.isError;
30
30
  }
31
31
  /**
32
- * данные о последней ошибке
32
+ * Данные о последней ошибке
33
33
  */
34
34
  get error() {
35
35
  return this.statusStorage.error;
36
36
  }
37
37
  /**
38
- * флаг обозначающий, что последний запрос был успешно завершен
38
+ * Флаг обозначающий, что последний запрос был успешно завершен
39
39
  */
40
40
  get isSuccess() {
41
41
  return this.statusStorage.isSuccess;
42
42
  }
43
43
  /**
44
- * флаг, обозначающий простаивание, т.е. запроса еще не было
44
+ * Флаг, обозначающий простаивание, т.е. запроса еще не было
45
45
  */
46
46
  get isIdle() {
47
47
  return this.auxiliary.isIdle;
48
48
  }
49
49
  /**
50
- * статусы, изменяющиеся после первого успешного запроса в режиме isBackground: true
50
+ * Статусы, изменяющиеся после первого успешного запроса в режиме isBackground: true
51
51
  * @example
52
52
  * const query = mobxQuery.createQuery(
53
53
  * ['some cache key'],
@@ -64,8 +64,8 @@ export class QueryContainer {
64
64
  * console.log(query.isLoading); // не изменялся
65
65
  * console.log(query.isSuccess); // остался неизменным - true
66
66
  *
67
- * console.log(query.backgroundStatus.isLoading); // переключался в true на момент обновления
68
- * console.log(query.backgroundStatus.isSuccess); // true
67
+ * console.log(query.background.isLoading); // переключался в true на момент обновления
68
+ * console.log(query.background.isSuccess); // true
69
69
  *
70
70
  * @exception isBackground:false (а так же по умолчанию) background не доступен, и равен null
71
71
  * @exception Mutation не доступен в мутации и равен null
package/README.md CHANGED
@@ -345,7 +345,7 @@ console.log(query.error); // 'foo'
345
345
  ## Режим фонового обновления
346
346
  `Query` и `InfiniteQuery` имеют режим фонового обновления. Предполагается, что будет хорошо подходить для обновления данных через websocket.
347
347
 
348
- В этом режиме, основные статусные флаги `isSuccess`, `isLoading`, `isError`, `error` будут изменяться до первого успешного запроса. Последующие запросы уже будут изменять статусные флаги под полем `backgroundStatus`
348
+ В этом режиме, основные статусные флаги `isSuccess`, `isLoading`, `isError`, `error` будут изменяться до первого успешного запроса. Последующие запросы уже будут изменять статусные флаги под полем `background`
349
349
 
350
350
  ```ts
351
351
  const query = mobxQuery.createQuery(
@@ -363,8 +363,8 @@ await query.async();
363
363
  console.log(query.isLoading); // не изменялся
364
364
  console.log(query.isSuccess); // остался неизменным - true
365
365
 
366
- console.log(query.backgroundStatus.isLoading); // переключался в true на момент обновления
367
- console.log(query.backgroundStatus.isSuccess); // true
366
+ console.log(query.background.isLoading); // переключался в true на момент обновления
367
+ console.log(query.background.isSuccess); // true
368
368
  ```
369
369
 
370
370
  # Тестирование
@@ -1,25 +1,24 @@
1
1
  import { StorageFactory } from '../StorageFactory';
2
- import { type CacheKey } from '../types';
3
2
  export declare class StatusStorage<TError> {
4
3
  constructor();
5
4
  /**
6
- * флаг обозначающий загрузку данных
5
+ * Флаг обозначающий загрузку данных
7
6
  */
8
7
  isLoading: boolean;
9
8
  /**
10
- * флаг обозначающий, что последний запрос был зафейлен
9
+ * Флаг обозначающий, что последний запрос был зафейлен
11
10
  */
12
11
  isError: boolean;
13
12
  /**
14
- * данные о последней ошибке
13
+ * Данные о последней ошибке
15
14
  */
16
15
  error?: TError;
17
16
  /**
18
- * флаг, обозначающий успешность завершения последнего запроса
17
+ * Флаг, обозначающий успешность завершения последнего запроса
19
18
  */
20
19
  isSuccess: boolean;
21
20
  }
22
21
  export declare class StatusStorageFactory extends StorageFactory<StatusStorage<void>> {
23
22
  constructor();
24
- getStorage: <TError>(key: CacheKey[]) => StatusStorage<TError>;
23
+ getStorage: <TError>(keyHash: string) => StatusStorage<TError>;
25
24
  }
@@ -3,19 +3,19 @@ import { StorageFactory } from '../StorageFactory';
3
3
  export class StatusStorage {
4
4
  constructor() {
5
5
  /**
6
- * флаг обозначающий загрузку данных
6
+ * Флаг обозначающий загрузку данных
7
7
  */
8
8
  this.isLoading = false;
9
9
  /**
10
- * флаг обозначающий, что последний запрос был зафейлен
10
+ * Флаг обозначающий, что последний запрос был зафейлен
11
11
  */
12
12
  this.isError = false;
13
13
  /**
14
- * данные о последней ошибке
14
+ * Данные о последней ошибке
15
15
  */
16
16
  this.error = undefined;
17
17
  /**
18
- * флаг, обозначающий успешность завершения последнего запроса
18
+ * Флаг, обозначающий успешность завершения последнего запроса
19
19
  */
20
20
  this.isSuccess = false;
21
21
  makeObservable(this, {
@@ -29,8 +29,8 @@ export class StatusStorage {
29
29
  export class StatusStorageFactory extends StorageFactory {
30
30
  constructor() {
31
31
  super(() => new StatusStorage());
32
- this.getStorage = (key) => {
33
- return this.getInternalStorage(key);
32
+ this.getStorage = (keyHash) => {
33
+ return this.getInternalStorage(keyHash);
34
34
  };
35
35
  }
36
36
  }
@@ -1,13 +1,9 @@
1
- import { type CacheKey } from '../types';
2
- export declare abstract class StorageFactory<TStorage> {
1
+ export declare abstract class StorageFactory<TStorage extends {}> {
3
2
  private readonly createStorage;
3
+ private readonly adaptableMap;
4
4
  protected constructor(createStorage: () => TStorage);
5
5
  /**
6
- * Map хранящий инстансы хранилищ по хэшу ключа
6
+ * Фабричный метод получения/создания инстанса хранилища по ключу
7
7
  */
8
- private storageMap;
9
- /**
10
- * фабричный метод получения/создания инстанса хранилища по ключу
11
- */
12
- protected getInternalStorage: (key: CacheKey[]) => TStorage | undefined;
8
+ getInternalStorage: (keyHash: string) => TStorage;
13
9
  }
@@ -1,19 +1,19 @@
1
+ import { AdaptableMap } from '../AdaptableMap';
1
2
  export class StorageFactory {
2
3
  constructor(createStorage) {
3
4
  this.createStorage = createStorage;
5
+ this.adaptableMap = new AdaptableMap();
4
6
  /**
5
- * Map хранящий инстансы хранилищ по хэшу ключа
7
+ * Фабричный метод получения/создания инстанса хранилища по ключу
6
8
  */
7
- this.storageMap = new Map();
8
- /**
9
- * фабричный метод получения/создания инстанса хранилища по ключу
10
- */
11
- this.getInternalStorage = (key) => {
12
- const keyHash = JSON.stringify(key);
13
- if (!this.storageMap.has(keyHash)) {
14
- this.storageMap.set(keyHash, this.createStorage());
9
+ this.getInternalStorage = (keyHash) => {
10
+ const storage = this.adaptableMap.get(keyHash);
11
+ if (!storage) {
12
+ const createdStorage = this.createStorage();
13
+ this.adaptableMap.set(keyHash, createdStorage);
14
+ return createdStorage;
15
15
  }
16
- return this.storageMap.get(keyHash);
16
+ return storage;
17
17
  };
18
18
  }
19
19
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@astral/mobx-query",
3
- "version": "1.5.0",
3
+ "version": "1.6.1",
4
4
  "browser": "./index.js",
5
5
  "main": "./index.js",
6
6
  "dependencies": {
package/types.d.ts CHANGED
@@ -44,7 +44,7 @@ export type QueryBaseActions<TResult, TError, TExecutorParams = void> = {
44
44
  /**
45
45
  * политика получения данных.
46
46
  * @enum cache-first - данные сначала берутся из кеша, если их нет, тогда идет обращение к сети, ответ записывается в кэш
47
- * @enum network-only - данные всегда беруться из сети, при этом ответ записывается в кэш
47
+ * @enum network-only - данные всегда берутся из сети, при этом ответ записывается в кэш
48
48
  */
49
49
  export type FetchPolicy = 'network-only' | 'cache-first';
50
50
  /**