@astral/mobx-query 1.8.0 → 1.9.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/MobxQuery/MobxQuery.d.ts +44 -0
- package/MobxQuery/MobxQuery.js +48 -0
- package/README.md +1048 -287
- package/Sets/InfiniteQuerySet/InfiniteQuerySet.d.ts +60 -0
- package/Sets/InfiniteQuerySet/InfiniteQuerySet.js +71 -0
- package/Sets/InfiniteQuerySet/index.d.ts +1 -0
- package/Sets/InfiniteQuerySet/index.js +1 -0
- package/Sets/MutationSet/MutationSet.d.ts +32 -0
- package/Sets/MutationSet/MutationSet.js +31 -0
- package/Sets/MutationSet/index.d.ts +1 -0
- package/Sets/MutationSet/index.js +1 -0
- package/Sets/QuerySet/QuerySet.d.ts +64 -0
- package/Sets/QuerySet/QuerySet.js +72 -0
- package/Sets/QuerySet/index.d.ts +1 -0
- package/Sets/QuerySet/index.js +1 -0
- package/Sets/index.d.ts +3 -0
- package/Sets/index.js +3 -0
- package/Sets/utils/generateQuerySetBaseKey/generateQuerySetBaseKey.d.ts +4 -0
- package/Sets/utils/generateQuerySetBaseKey/generateQuerySetBaseKey.js +5 -0
- package/Sets/utils/generateQuerySetBaseKey/index.d.ts +1 -0
- package/Sets/utils/generateQuerySetBaseKey/index.js +1 -0
- package/Sets/utils/generateQuerySetKeys/generateQuerySetKeys.d.ts +9 -0
- package/Sets/utils/generateQuerySetKeys/generateQuerySetKeys.js +20 -0
- package/Sets/utils/generateQuerySetKeys/index.d.ts +1 -0
- package/Sets/utils/generateQuerySetKeys/index.js +1 -0
- package/Sets/utils/index.d.ts +2 -0
- package/Sets/utils/index.js +2 -0
- package/index.d.ts +2 -1
- package/index.js +1 -0
- package/node/AdaptableMap/AdaptableMap.d.ts +29 -0
- package/node/AdaptableMap/AdaptableMap.js +81 -0
- package/node/AdaptableMap/index.d.ts +1 -0
- package/node/AdaptableMap/index.js +17 -0
- package/node/AuxiliaryQuery/AuxiliaryQuery.d.ts +55 -0
- package/node/AuxiliaryQuery/AuxiliaryQuery.js +115 -0
- package/node/AuxiliaryQuery/index.d.ts +1 -0
- package/node/AuxiliaryQuery/index.js +17 -0
- package/node/DataStorage/DataStorage.d.ts +33 -0
- package/node/DataStorage/DataStorage.js +51 -0
- package/node/DataStorage/index.d.ts +1 -0
- package/node/DataStorage/index.js +17 -0
- package/node/InfiniteQuery/InfiniteQuery.d.ts +135 -0
- package/node/InfiniteQuery/InfiniteQuery.js +169 -0
- package/node/InfiniteQuery/index.d.ts +1 -0
- package/node/InfiniteQuery/index.js +17 -0
- package/node/MobxQuery/MobxQuery.d.ts +176 -0
- package/node/MobxQuery/MobxQuery.js +225 -0
- package/node/MobxQuery/index.d.ts +1 -0
- package/node/MobxQuery/index.js +17 -0
- package/node/Mutation/Mutation.d.ts +34 -0
- package/node/Mutation/Mutation.js +47 -0
- package/node/Mutation/index.d.ts +1 -0
- package/node/Mutation/index.js +17 -0
- package/node/Query/Query.d.ts +103 -0
- package/node/Query/Query.js +113 -0
- package/node/Query/index.d.ts +1 -0
- package/node/Query/index.js +17 -0
- package/node/QueryContainer/QueryContainer.d.ts +61 -0
- package/node/QueryContainer/QueryContainer.js +83 -0
- package/node/QueryContainer/index.d.ts +1 -0
- package/node/QueryContainer/index.js +17 -0
- package/node/Sets/InfiniteQuerySet/InfiniteQuerySet.d.ts +60 -0
- package/node/Sets/InfiniteQuerySet/InfiniteQuerySet.js +75 -0
- package/node/Sets/InfiniteQuerySet/index.d.ts +1 -0
- package/node/Sets/InfiniteQuerySet/index.js +17 -0
- package/node/Sets/MutationSet/MutationSet.d.ts +32 -0
- package/node/Sets/MutationSet/MutationSet.js +35 -0
- package/node/Sets/MutationSet/index.d.ts +1 -0
- package/node/Sets/MutationSet/index.js +17 -0
- package/node/Sets/QuerySet/QuerySet.d.ts +64 -0
- package/node/Sets/QuerySet/QuerySet.js +76 -0
- package/node/Sets/QuerySet/index.d.ts +1 -0
- package/node/Sets/QuerySet/index.js +17 -0
- package/node/Sets/index.d.ts +3 -0
- package/node/Sets/index.js +19 -0
- package/node/Sets/utils/generateQuerySetBaseKey/generateQuerySetBaseKey.d.ts +4 -0
- package/node/Sets/utils/generateQuerySetBaseKey/generateQuerySetBaseKey.js +12 -0
- package/node/Sets/utils/generateQuerySetBaseKey/index.d.ts +1 -0
- package/node/Sets/utils/generateQuerySetBaseKey/index.js +17 -0
- package/node/Sets/utils/generateQuerySetKeys/generateQuerySetKeys.d.ts +9 -0
- package/node/Sets/utils/generateQuerySetKeys/generateQuerySetKeys.js +27 -0
- package/node/Sets/utils/generateQuerySetKeys/index.d.ts +1 -0
- package/node/Sets/utils/generateQuerySetKeys/index.js +17 -0
- package/node/Sets/utils/index.d.ts +2 -0
- package/node/Sets/utils/index.js +18 -0
- package/node/StatusStorage/StatusStorage.d.ts +24 -0
- package/node/StatusStorage/StatusStorage.js +41 -0
- package/node/StatusStorage/index.d.ts +1 -0
- package/node/StatusStorage/index.js +17 -0
- package/node/StorageFactory/StorageFactory.d.ts +9 -0
- package/node/StorageFactory/StorageFactory.js +23 -0
- package/node/StorageFactory/index.d.ts +1 -0
- package/node/StorageFactory/index.js +17 -0
- package/node/index.d.ts +6 -0
- package/node/index.js +11 -0
- package/node/types.d.ts +55 -0
- package/node/types.js +2 -0
- package/package.json +11 -4
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.QuerySet = void 0;
|
|
4
|
+
const utils_1 = require("../utils");
|
|
5
|
+
/**
|
|
6
|
+
* Набор queries под одним ключем с целью повышения читаемости кода и удобства инвалидации по общему ключу
|
|
7
|
+
*/
|
|
8
|
+
class QuerySet {
|
|
9
|
+
constructor(_cache, _queryConfigurator, config) {
|
|
10
|
+
var _a;
|
|
11
|
+
this._cache = _cache;
|
|
12
|
+
this._queryConfigurator = _queryConfigurator;
|
|
13
|
+
/**
|
|
14
|
+
* Создает query в кэше. Добавляет его в набор
|
|
15
|
+
* @returns Query объект
|
|
16
|
+
* @example
|
|
17
|
+
* const docQuery = docFetcher.queries.doc.create('docId')
|
|
18
|
+
* // Получает данные
|
|
19
|
+
* docQuery.sync()
|
|
20
|
+
*/
|
|
21
|
+
this.create = (...params) => {
|
|
22
|
+
const { keys, execute } = this.configureQuery(...params);
|
|
23
|
+
return this._cache.createQuery(keys, execute);
|
|
24
|
+
};
|
|
25
|
+
/**
|
|
26
|
+
* Создает query в кэше с дополнительными параметрами конфигурации. Добавляет его в набор
|
|
27
|
+
* @param config - Параметры конфигурации query. Например, fetchPolicy
|
|
28
|
+
* @param params - Параметры запроса
|
|
29
|
+
* @returns Query объект
|
|
30
|
+
* @example
|
|
31
|
+
* const docQuery = docFetcher.queries.doc.createWithConfig(
|
|
32
|
+
* { fetchPolicy: 'network-only' },
|
|
33
|
+
* 'docId',
|
|
34
|
+
* )
|
|
35
|
+
* // Получает данные из query
|
|
36
|
+
* docQuery.sync()
|
|
37
|
+
*/
|
|
38
|
+
this.createWithConfig = (config, ...params) => {
|
|
39
|
+
const { keys, execute } = this.configureQuery(...params);
|
|
40
|
+
return this._cache.createQuery(keys, execute, config);
|
|
41
|
+
};
|
|
42
|
+
/**
|
|
43
|
+
* Инвалидирует текущий query в кэше
|
|
44
|
+
* @param keys - Дополнительные ключи для инвалидации. Если не указаны, то инвалидируется весь набор query
|
|
45
|
+
* @example
|
|
46
|
+
* const docFetcher = {
|
|
47
|
+
* doc: mobxQuery.createQuerySet((id: string) => ({
|
|
48
|
+
* execute: () => httpService.get(`/doc/${id}?page=${page}`),
|
|
49
|
+
* })),
|
|
50
|
+
* };
|
|
51
|
+
*
|
|
52
|
+
* // Инвалидирует все query doc
|
|
53
|
+
* docFetcher.doc.invalidate()
|
|
54
|
+
*
|
|
55
|
+
* // Инвалидирует query doc с конкретным переданным id. Доступные ключи инвалидации зависят от указанных additionalKeys, переданных при определении query в фабрике createDataFetcher
|
|
56
|
+
* docFetcher.doc.invalidate('docId')
|
|
57
|
+
*/
|
|
58
|
+
this.invalidate = (...params) => {
|
|
59
|
+
if (params.length === 0) {
|
|
60
|
+
this._cache.invalidate([this.baseKey]);
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
const { keys } = this.configureQuery(...params);
|
|
64
|
+
this._cache.invalidate(keys, 'chain-match');
|
|
65
|
+
};
|
|
66
|
+
this.configureQuery = (...params) => {
|
|
67
|
+
const { keys, execute } = this._queryConfigurator(...params);
|
|
68
|
+
return {
|
|
69
|
+
keys: (0, utils_1.generateQuerySetKeys)(this.baseKey, keys !== null && keys !== void 0 ? keys : params),
|
|
70
|
+
execute,
|
|
71
|
+
};
|
|
72
|
+
};
|
|
73
|
+
this.baseKey = (_a = config === null || config === void 0 ? void 0 : config.name) !== null && _a !== void 0 ? _a : (0, utils_1.generateQuerySetBaseKey)(_queryConfigurator);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
exports.QuerySet = QuerySet;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './QuerySet';
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./QuerySet"), exports);
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./MutationSet"), exports);
|
|
18
|
+
__exportStar(require("./QuerySet"), exports);
|
|
19
|
+
__exportStar(require("./InfiniteQuerySet"), exports);
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.generateQuerySetBaseKey = void 0;
|
|
7
|
+
const hash_1 = __importDefault(require("@emotion/hash"));
|
|
8
|
+
/**
|
|
9
|
+
* Создает базовый ключ на основе хэша от configurator
|
|
10
|
+
*/
|
|
11
|
+
const generateQuerySetBaseKey = (configurator) => (0, hash_1.default)(configurator.toString());
|
|
12
|
+
exports.generateQuerySetBaseKey = generateQuerySetBaseKey;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './generateQuerySetBaseKey';
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./generateQuerySetBaseKey"), exports);
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { type CacheKey } from '../../../types';
|
|
2
|
+
/**
|
|
3
|
+
* Создает ключи на основе каждого параметра
|
|
4
|
+
* @param additionalKeys - Создает для каждого параметра отдельный ключ, чтобы по нему можно было инвалидировать query
|
|
5
|
+
* @example
|
|
6
|
+
* // Создаст ключи ['22f4', ['22f4', 'organizationID', '1'], ['22f4', 'employeeID', '2']]
|
|
7
|
+
* generateQuerySetKeys('22f4', params)
|
|
8
|
+
*/
|
|
9
|
+
export declare const generateQuerySetKeys: (baseKey: string, params: CacheKey[]) => CacheKey[];
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.generateQuerySetKeys = void 0;
|
|
7
|
+
const is_plain_obj_1 = __importDefault(require("is-plain-obj"));
|
|
8
|
+
/**
|
|
9
|
+
* Создает ключи на основе каждого параметра
|
|
10
|
+
* @param additionalKeys - Создает для каждого параметра отдельный ключ, чтобы по нему можно было инвалидировать query
|
|
11
|
+
* @example
|
|
12
|
+
* // Создаст ключи ['22f4', ['22f4', 'organizationID', '1'], ['22f4', 'employeeID', '2']]
|
|
13
|
+
* generateQuerySetKeys('22f4', params)
|
|
14
|
+
*/
|
|
15
|
+
const generateQuerySetKeys = (baseKey, params) => {
|
|
16
|
+
const resultKeys = [];
|
|
17
|
+
params.forEach((param) => {
|
|
18
|
+
if ((0, is_plain_obj_1.default)(param)) {
|
|
19
|
+
resultKeys.push(...Object.entries(param).map(([key, value]) => [baseKey, key, value]));
|
|
20
|
+
}
|
|
21
|
+
else {
|
|
22
|
+
resultKeys.push(param);
|
|
23
|
+
}
|
|
24
|
+
});
|
|
25
|
+
return [baseKey, ...resultKeys];
|
|
26
|
+
};
|
|
27
|
+
exports.generateQuerySetKeys = generateQuerySetKeys;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './generateQuerySetKeys';
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./generateQuerySetKeys"), exports);
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./generateQuerySetKeys"), exports);
|
|
18
|
+
__exportStar(require("./generateQuerySetBaseKey"), exports);
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { StorageFactory } from '../StorageFactory';
|
|
2
|
+
export declare class StatusStorage<TError> {
|
|
3
|
+
constructor();
|
|
4
|
+
/**
|
|
5
|
+
* Флаг обозначающий загрузку данных
|
|
6
|
+
*/
|
|
7
|
+
isLoading: boolean;
|
|
8
|
+
/**
|
|
9
|
+
* Флаг обозначающий, что последний запрос был зафейлен
|
|
10
|
+
*/
|
|
11
|
+
isError: boolean;
|
|
12
|
+
/**
|
|
13
|
+
* Данные о последней ошибке
|
|
14
|
+
*/
|
|
15
|
+
error?: TError;
|
|
16
|
+
/**
|
|
17
|
+
* Флаг, обозначающий успешность завершения последнего запроса
|
|
18
|
+
*/
|
|
19
|
+
isSuccess: boolean;
|
|
20
|
+
}
|
|
21
|
+
export declare class StatusStorageFactory extends StorageFactory<StatusStorage<void>> {
|
|
22
|
+
constructor();
|
|
23
|
+
getStorage: <TError>(keyHash: string) => StatusStorage<TError>;
|
|
24
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.StatusStorageFactory = exports.StatusStorage = void 0;
|
|
4
|
+
const mobx_1 = require("mobx");
|
|
5
|
+
const StorageFactory_1 = require("../StorageFactory");
|
|
6
|
+
class StatusStorage {
|
|
7
|
+
constructor() {
|
|
8
|
+
/**
|
|
9
|
+
* Флаг обозначающий загрузку данных
|
|
10
|
+
*/
|
|
11
|
+
this.isLoading = false;
|
|
12
|
+
/**
|
|
13
|
+
* Флаг обозначающий, что последний запрос был зафейлен
|
|
14
|
+
*/
|
|
15
|
+
this.isError = false;
|
|
16
|
+
/**
|
|
17
|
+
* Данные о последней ошибке
|
|
18
|
+
*/
|
|
19
|
+
this.error = undefined;
|
|
20
|
+
/**
|
|
21
|
+
* Флаг, обозначающий успешность завершения последнего запроса
|
|
22
|
+
*/
|
|
23
|
+
this.isSuccess = false;
|
|
24
|
+
(0, mobx_1.makeObservable)(this, {
|
|
25
|
+
error: mobx_1.observable,
|
|
26
|
+
isError: mobx_1.observable,
|
|
27
|
+
isLoading: mobx_1.observable,
|
|
28
|
+
isSuccess: mobx_1.observable,
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
exports.StatusStorage = StatusStorage;
|
|
33
|
+
class StatusStorageFactory extends StorageFactory_1.StorageFactory {
|
|
34
|
+
constructor() {
|
|
35
|
+
super(() => new StatusStorage());
|
|
36
|
+
this.getStorage = (keyHash) => {
|
|
37
|
+
return this.getInternalStorage(keyHash);
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
exports.StatusStorageFactory = StatusStorageFactory;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './StatusStorage';
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./StatusStorage"), exports);
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export declare abstract class StorageFactory<TStorage extends {}> {
|
|
2
|
+
private readonly createStorage;
|
|
3
|
+
private readonly adaptableMap;
|
|
4
|
+
protected constructor(createStorage: () => TStorage);
|
|
5
|
+
/**
|
|
6
|
+
* Фабричный метод получения/создания инстанса хранилища по ключу
|
|
7
|
+
*/
|
|
8
|
+
getInternalStorage: (keyHash: string) => TStorage;
|
|
9
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.StorageFactory = void 0;
|
|
4
|
+
const AdaptableMap_1 = require("../AdaptableMap");
|
|
5
|
+
class StorageFactory {
|
|
6
|
+
constructor(createStorage) {
|
|
7
|
+
this.createStorage = createStorage;
|
|
8
|
+
this.adaptableMap = new AdaptableMap_1.AdaptableMap();
|
|
9
|
+
/**
|
|
10
|
+
* Фабричный метод получения/создания инстанса хранилища по ключу
|
|
11
|
+
*/
|
|
12
|
+
this.getInternalStorage = (keyHash) => {
|
|
13
|
+
const storage = this.adaptableMap.get(keyHash);
|
|
14
|
+
if (!storage) {
|
|
15
|
+
const createdStorage = this.createStorage();
|
|
16
|
+
this.adaptableMap.set(keyHash, createdStorage);
|
|
17
|
+
return createdStorage;
|
|
18
|
+
}
|
|
19
|
+
return storage;
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
exports.StorageFactory = StorageFactory;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './StorageFactory';
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./StorageFactory"), exports);
|
package/node/index.d.ts
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export { Mutation } from './Mutation';
|
|
2
|
+
export { Query } from './Query';
|
|
3
|
+
export { type InfiniteParams, InfiniteQuery } from './InfiniteQuery';
|
|
4
|
+
export { MobxQuery, type CreateQueryParams, type CreateInfiniteQueryParams, type CreateMutationParams, } from './MobxQuery';
|
|
5
|
+
export { type QuerySet, type InfiniteQuerySet, type MutationSet } from './Sets';
|
|
6
|
+
export { type CacheKey, type FetchPolicy } from './types';
|
package/node/index.js
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MobxQuery = exports.InfiniteQuery = exports.Query = exports.Mutation = void 0;
|
|
4
|
+
var Mutation_1 = require("./Mutation");
|
|
5
|
+
Object.defineProperty(exports, "Mutation", { enumerable: true, get: function () { return Mutation_1.Mutation; } });
|
|
6
|
+
var Query_1 = require("./Query");
|
|
7
|
+
Object.defineProperty(exports, "Query", { enumerable: true, get: function () { return Query_1.Query; } });
|
|
8
|
+
var InfiniteQuery_1 = require("./InfiniteQuery");
|
|
9
|
+
Object.defineProperty(exports, "InfiniteQuery", { enumerable: true, get: function () { return InfiniteQuery_1.InfiniteQuery; } });
|
|
10
|
+
var MobxQuery_1 = require("./MobxQuery");
|
|
11
|
+
Object.defineProperty(exports, "MobxQuery", { enumerable: true, get: function () { return MobxQuery_1.MobxQuery; } });
|
package/node/types.d.ts
ADDED
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
export type SyncParams<TResult, TError, TExecutorParams = void> = {
|
|
2
|
+
onSuccess?: (res: TResult) => void;
|
|
3
|
+
onError?: (e: TError) => void;
|
|
4
|
+
params?: TExecutorParams;
|
|
5
|
+
};
|
|
6
|
+
/**
|
|
7
|
+
* синхронный метод получения данных
|
|
8
|
+
*/
|
|
9
|
+
export type Sync<TResult, TError, TExecutorParams = void> = (params?: SyncParams<TResult, TError, TExecutorParams>) => void;
|
|
10
|
+
/**
|
|
11
|
+
* асинхронный метод получения данных
|
|
12
|
+
*/
|
|
13
|
+
export type Async<TResult, TExecutorParams = void> = (params: TExecutorParams) => Promise<TResult>;
|
|
14
|
+
export type QueryBaseActions<TResult, TError, TExecutorParams = void> = {
|
|
15
|
+
/**
|
|
16
|
+
* синхронный метод получения данных
|
|
17
|
+
*/
|
|
18
|
+
sync: Sync<TResult, TError, TExecutorParams>;
|
|
19
|
+
/**
|
|
20
|
+
* асинхронный метод получения данных
|
|
21
|
+
*/
|
|
22
|
+
async: Async<TResult, TExecutorParams>;
|
|
23
|
+
/**
|
|
24
|
+
* флаг обозначающий загрузку данных
|
|
25
|
+
*/
|
|
26
|
+
isLoading: boolean;
|
|
27
|
+
/**
|
|
28
|
+
* флаг обозначающий, что последний запрос был зафейлен
|
|
29
|
+
*/
|
|
30
|
+
isError: boolean;
|
|
31
|
+
/**
|
|
32
|
+
* данные о последней ошибке
|
|
33
|
+
*/
|
|
34
|
+
error?: TError;
|
|
35
|
+
/**
|
|
36
|
+
* флаг обзначающий, что последний запрос был успешно выполнен
|
|
37
|
+
*/
|
|
38
|
+
isSuccess: boolean;
|
|
39
|
+
/**
|
|
40
|
+
* флаг, обозначающий простаивание, т.е. запроса еще не было
|
|
41
|
+
*/
|
|
42
|
+
isIdle: boolean;
|
|
43
|
+
};
|
|
44
|
+
/**
|
|
45
|
+
* политика получения данных.
|
|
46
|
+
* @enum cache-first - данные сначала берутся из кеша, если их нет, тогда идет обращение к сети, ответ записывается в кэш
|
|
47
|
+
* @enum network-only - данные всегда берутся из сети, при этом ответ записывается в кэш
|
|
48
|
+
*/
|
|
49
|
+
export type FetchPolicy = 'network-only' | 'cache-first';
|
|
50
|
+
/**
|
|
51
|
+
* ключ для кешированя
|
|
52
|
+
*/
|
|
53
|
+
export type CacheKey = string | number | boolean | null | undefined | CacheKey[] | {
|
|
54
|
+
[key: string]: CacheKey;
|
|
55
|
+
};
|
package/node/types.js
ADDED
package/package.json
CHANGED
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@astral/mobx-query",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.9.0",
|
|
4
4
|
"browser": "./index.js",
|
|
5
|
-
"main": "./index.js",
|
|
5
|
+
"main": "./node/index.js",
|
|
6
6
|
"dependencies": {
|
|
7
|
-
"mobx": "^6.9.0"
|
|
7
|
+
"mobx": "^6.9.0",
|
|
8
|
+
"is-plain-obj": "4.1.0",
|
|
9
|
+
"utility-types": "3.11.0",
|
|
10
|
+
"@emotion/hash": "0.9.2"
|
|
8
11
|
},
|
|
9
12
|
"author": "Astral.Soft",
|
|
10
13
|
"license": "MIT",
|
|
@@ -20,6 +23,10 @@
|
|
|
20
23
|
"types": "./index.d.ts",
|
|
21
24
|
"module": "./index.js",
|
|
22
25
|
"exports": {
|
|
23
|
-
".":
|
|
26
|
+
".": {
|
|
27
|
+
"vitest": "./node/index.js",
|
|
28
|
+
"module": "./index.js",
|
|
29
|
+
"require": "./node/index.js"
|
|
30
|
+
}
|
|
24
31
|
}
|
|
25
32
|
}
|