rxtutils 1.1.4-beta.9 → 1.1.6

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 (64) hide show
  1. package/README.md +117 -49
  2. package/cjs/_utils/defaultEquals.cjs +4 -19
  3. package/cjs/cache/index.cjs +130 -163
  4. package/cjs/cache/indexDB.cjs +86 -99
  5. package/cjs/downloadBlob.cjs +14 -0
  6. package/cjs/hooks/index.cjs +3 -6
  7. package/cjs/hooks/useCombineControlValue.cjs +33 -41
  8. package/cjs/index.cjs +16 -17
  9. package/cjs/request/defaultHandlers.cjs +5 -27
  10. package/cjs/request/error.cjs +18 -30
  11. package/cjs/request/index.cjs +194 -174
  12. package/cjs/store/createGetter/index.cjs +26 -40
  13. package/cjs/store/createStateStore/index.cjs +47 -90
  14. package/cjs/store/index.cjs +4 -7
  15. package/cjs/validator/decorators.cjs +71 -228
  16. package/cjs/validator/index.cjs +4 -7
  17. package/cjs/validator/validator.cjs +101 -177
  18. package/es/_utils/defaultEquals.mjs +4 -17
  19. package/es/cache/index.d.ts +9 -13
  20. package/es/cache/index.mjs +132 -160
  21. package/es/cache/indexDB.d.ts +1 -3
  22. package/es/cache/indexDB.mjs +87 -98
  23. package/es/downloadBlob.d.ts +8 -0
  24. package/es/downloadBlob.mjs +14 -0
  25. package/es/hooks/index.d.ts +1 -1
  26. package/es/hooks/index.mjs +4 -1
  27. package/es/hooks/useCombineControlValue.d.ts +5 -8
  28. package/es/hooks/useCombineControlValue.mjs +34 -40
  29. package/es/index.d.ts +28 -8
  30. package/es/index.mjs +29 -7
  31. package/es/request/defaultHandlers.d.ts +24 -0
  32. package/es/request/defaultHandlers.mjs +8 -26
  33. package/es/request/error.d.ts +3 -6
  34. package/es/request/error.mjs +18 -28
  35. package/es/request/index.d.ts +32 -20
  36. package/es/request/index.mjs +194 -172
  37. package/es/store/createGetter/index.d.ts +6 -10
  38. package/es/store/createGetter/index.mjs +28 -39
  39. package/es/store/createStateStore/index.d.ts +9 -9
  40. package/es/store/createStateStore/index.mjs +49 -87
  41. package/es/store/index.d.ts +4 -2
  42. package/es/store/index.mjs +7 -2
  43. package/es/validator/decorators.d.ts +12 -21
  44. package/es/validator/decorators.mjs +81 -226
  45. package/es/validator/index.d.ts +2 -2
  46. package/es/validator/index.mjs +16 -2
  47. package/es/validator/validator.d.ts +5 -6
  48. package/es/validator/validator.mjs +102 -176
  49. package/package.json +85 -15
  50. package/cjs/_utils/deepAssign.cjs +0 -25
  51. package/cjs/cache/index.d.ts +0 -141
  52. package/cjs/cache/indexDB.d.ts +0 -52
  53. package/cjs/hooks/index.d.ts +0 -1
  54. package/cjs/hooks/useCombineControlValue.d.ts +0 -21
  55. package/cjs/index.d.ts +0 -8
  56. package/cjs/request/error.d.ts +0 -31
  57. package/cjs/request/index.d.ts +0 -147
  58. package/cjs/store/createGetter/index.d.ts +0 -30
  59. package/cjs/store/createStateStore/index.d.ts +0 -42
  60. package/cjs/store/index.d.ts +0 -2
  61. package/cjs/validator/decorators.d.ts +0 -159
  62. package/cjs/validator/index.d.ts +0 -2
  63. package/cjs/validator/validator.d.ts +0 -84
  64. package/es/_utils/deepAssign.mjs +0 -23
@@ -1,178 +1,198 @@
1
- 'use strict';
2
-
3
- var tslib = require('tslib');
4
- var axios = require('axios');
5
- var at = require('lodash-es/at');
6
- var defaultHandlers = require('./defaultHandlers.cjs');
7
- var defaultEquals = require('../_utils/defaultEquals.cjs');
8
- var index = require('../cache/index.cjs');
9
- var error = require('./error.cjs');
10
- var deepAssign = require('../_utils/deepAssign.cjs');
11
-
12
- /**
13
- * 创建基础请求实例
14
- * @param baseOptions 基础配置选项
15
- * @returns 请求创建函数
16
- */
1
+ "use strict";
2
+ Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
+ const axios = require("axios");
4
+ const at = require("lodash-es/at");
5
+ const defaultHandlers = require("./defaultHandlers.cjs");
6
+ const defaultEquals = require("../_utils/defaultEquals.cjs");
7
+ const cache_index = require("../cache/index.cjs");
8
+ const error = require("./error.cjs");
17
9
  function createBaseRequest(baseOptions) {
18
- var baseURL = Object(baseOptions).baseURL;
19
- // 创建新的 Axios 实例并配置基础URL和跨域凭证
20
- var instance = axios.create({
21
- baseURL: baseURL,
22
- withCredentials: true,
23
- });
24
- /**
25
- * 创建请求函数
26
- * @template Param 请求参数类型
27
- * @template Data 响应数据类型,必须是对象类型
28
- * @param requestOptions 请求配置
29
- * @param createOptions 创建选项(覆盖基础配置)
30
- * @returns 发送请求的函数
31
- */
32
- return function createRequest(requestOptions, createOptions) {
33
- var _a = tslib.__assign({}, requestOptions), method = _a.method, url = _a.url;
34
- var _b = tslib.__assign(tslib.__assign({}, baseOptions), createOptions), baseURL = _b.baseURL, _c = _b.cacheDataKey, cacheDataKey = _c === void 0 ? "".concat(method, ":").concat(baseURL).concat(url) : _c, cacheDataInStorage = _b.cacheDataInStorage, _d = _b.cacheKeyEquals, cacheKeyEquals = _d === void 0 ? defaultEquals : _d, cacheTime = _b.cacheTime, _e = _b.indexDBName, indexDBName = _e === void 0 ? "__apiCacheDatabase__" : _e;
35
- var cache = new index.default(cacheDataInStorage, cacheDataKey, cacheTime, indexDBName, cacheKeyEquals);
36
- function request(requestParam, options) {
37
- return tslib.__awaiter(this, void 0, void 0, function () {
38
- var _a, _b, requestMiddlewares, _c, finalAxiosOptions, finalRequestOptions, _i, requestMiddlewares_1, middleware, _d, nextAxiosOptions, nextRequestOptions, method, url, _e, data, _f, params, requestDataOrParams, _g, defaultMessageShower, _h, _j, enableCache, _k, cacheData, _l, defaultErrorCodeHandler, _m, defaultHttpErrorCodeHandler, _o, otherErrorHandler, _p, errorCodePath, _q, cacheTime, _r, errorCodeMap, _s, successCodes, _t, httpErrorCodeMap, _u,
39
- // axiosOptions = {},
40
- throwError, cacheItem;
41
- var _this = this;
42
- return tslib.__generator(this, function (_v) {
43
- switch (_v.label) {
44
- case 0:
45
- _a = tslib.__assign(tslib.__assign(tslib.__assign({}, baseOptions), createOptions), options), _b = _a.requestMiddlewares, requestMiddlewares = _b === void 0 ? [] : _b, _c = _a.axiosOptions, finalAxiosOptions = _c === void 0 ? {} : _c;
46
- finalRequestOptions = tslib.__assign(tslib.__assign({}, requestOptions), requestParam);
47
- _i = 0, requestMiddlewares_1 = requestMiddlewares;
48
- _v.label = 1;
49
- case 1:
50
- if (!(_i < requestMiddlewares_1.length)) return [3 /*break*/, 4];
51
- middleware = requestMiddlewares_1[_i];
52
- return [4 /*yield*/, middleware(finalAxiosOptions, finalRequestOptions)];
53
- case 2:
54
- _d = _v.sent(), nextAxiosOptions = _d.axiosOptions, nextRequestOptions = _d.requestOptions;
55
- deepAssign.deepAssign({}, finalAxiosOptions, nextAxiosOptions);
56
- deepAssign.deepAssign({}, finalRequestOptions, nextRequestOptions);
57
- _v.label = 3;
58
- case 3:
59
- _i++;
60
- return [3 /*break*/, 1];
61
- case 4:
62
- method = finalRequestOptions.method, url = finalRequestOptions.url, _e = finalRequestOptions.data, data = _e === void 0 ? {} : _e, _f = finalRequestOptions.params, params = _f === void 0 ? {} : _f;
63
- requestDataOrParams = params;
64
- if (method.toLowerCase() === "post") {
65
- requestDataOrParams = data;
66
- }
67
- _g = tslib.__assign(tslib.__assign(tslib.__assign({}, baseOptions), createOptions), options).defaultMessageShower, defaultMessageShower = _g === void 0 ? console.error : _g;
68
- _h = tslib.__assign(tslib.__assign(tslib.__assign({}, baseOptions), createOptions), options), _j = _h.enableCache, enableCache = _j === void 0 ? false : _j, _k = _h.cacheData, cacheData = _k === void 0 ? false : _k, _l = _h.defaultErrorCodeHandler, defaultErrorCodeHandler = _l === void 0 ? defaultHandlers._defaultErrorCodeHandler.bind(null, defaultMessageShower) : _l, _m = _h.defaultHttpErrorCodeHandler, defaultHttpErrorCodeHandler = _m === void 0 ? defaultHandlers._defaultHttpErrorCodeHandler.bind(null, defaultMessageShower) : _m, _o = _h.otherErrorHandler, otherErrorHandler = _o === void 0 ? defaultHandlers._defaultOtherErrorCodeHandler.bind(null, defaultMessageShower) : _o, _p = _h.errorCodePath, errorCodePath = _p === void 0 ? "code" : _p, _q = _h.cacheTime, cacheTime = _q === void 0 ? 60 : _q, _r = _h.errorCodeMap, errorCodeMap = _r === void 0 ? {} : _r, _s = _h.successCodes, successCodes = _s === void 0 ? ["0", "200"] : _s, _t = _h.httpErrorCodeMap, httpErrorCodeMap = _t === void 0 ? {} : _t, _u = _h.throwError, throwError = _u === void 0 ? true : _u;
69
- if (enableCache) {
70
- cacheItem = cache.getCache(requestDataOrParams);
71
- if (cacheItem) {
72
- return [2 /*return*/, Promise.resolve(cacheItem)];
73
- }
74
- }
75
- return [2 /*return*/, instance
76
- .request(tslib.__assign({ method: method, url: url, data: data, params: params }, finalAxiosOptions))
77
- .then(function (res) { return tslib.__awaiter(_this, void 0, void 0, function () {
78
- var errorCode, _a, _b, _c, customHandler, err, _d, _e, replaceResData, _f, handlerThrowError, _g;
79
- return tslib.__generator(this, function (_h) {
80
- switch (_h.label) {
81
- case 0:
82
- errorCode = String(at(res.data, errorCodePath));
83
- if (successCodes.includes(errorCode)) {
84
- if (cacheData) {
85
- cache.setCache(requestDataOrParams, res.data, { cacheTime: cacheTime });
86
- }
87
- return [2 /*return*/, res.data];
88
- }
89
- _a = errorCodeMap, _b = errorCode, _c = _a[_b], customHandler = _c === void 0 ? defaultErrorCodeHandler : _c;
90
- err = new error("服务端错误", "server", res);
91
- if (!(typeof customHandler === "string")) return [3 /*break*/, 1];
92
- defaultMessageShower(customHandler);
93
- return [3 /*break*/, 3];
94
- case 1:
95
- _g = Object;
96
- return [4 /*yield*/, customHandler(errorCode, res.data, res, tslib.__assign(tslib.__assign({}, requestOptions), requestParam))];
97
- case 2:
98
- _d = _g.apply(void 0, [(_h.sent())]), _e = _d.replaceResData, replaceResData = _e === void 0 ? res.data : _e, _f = _d.throwError, handlerThrowError = _f === void 0 ? "default" : _f;
99
- res.data = replaceResData;
100
- switch (handlerThrowError) {
101
- case true:
102
- throw err;
103
- case false:
104
- return [2 /*return*/, res.data];
105
- }
106
- _h.label = 3;
107
- case 3:
108
- if (throwError) {
109
- throw err;
110
- }
111
- return [2 /*return*/, res.data];
112
- }
113
- });
114
- }); }, function (error$1) { return tslib.__awaiter(_this, void 0, void 0, function () {
115
- var resData, _a, _b, _c, customHandler, err, _d, _e, replaceResData, _f, handlerThrowError, _g, resData, err, _h, _j, replaceResData, _k, handlerThrowError, _l;
116
- return tslib.__generator(this, function (_m) {
117
- switch (_m.label) {
118
- case 0:
119
- if (!error$1.response) return [3 /*break*/, 4];
120
- resData = error$1;
121
- _a = httpErrorCodeMap, _b = error$1.response.status, _c = _a[_b], customHandler = _c === void 0 ? defaultHttpErrorCodeHandler : _c;
122
- err = new error("服务端错误", "http", error$1);
123
- if (!(typeof customHandler === "string")) return [3 /*break*/, 1];
124
- defaultMessageShower(customHandler);
125
- return [3 /*break*/, 3];
126
- case 1:
127
- _g = Object;
128
- return [4 /*yield*/, customHandler(error$1.response.status, error$1, tslib.__assign(tslib.__assign({}, requestOptions), requestParam))];
129
- case 2:
130
- _d = _g.apply(void 0, [(_m.sent())]), _e = _d.replaceResData, replaceResData = _e === void 0 ? error$1 : _e, _f = _d.throwError, handlerThrowError = _f === void 0 ? "default" : _f;
131
- resData = replaceResData;
132
- switch (handlerThrowError) {
133
- case true:
134
- throw err;
135
- case false:
136
- return [2 /*return*/, resData];
137
- }
138
- _m.label = 3;
139
- case 3:
140
- if (throwError) {
141
- throw err;
142
- }
143
- return [2 /*return*/, resData];
144
- case 4:
145
- resData = error$1;
146
- err = new error("服务端错误", "http", error$1);
147
- err.type = "http";
148
- err.data = error$1;
149
- _l = Object;
150
- return [4 /*yield*/, otherErrorHandler(error$1)];
151
- case 5:
152
- _h = (_l.apply(void 0, [(_m.sent())])), _j = _h.replaceResData, replaceResData = _j === void 0 ? error$1 : _j, _k = _h.throwError, handlerThrowError = _k === void 0 ? "default" : _k;
153
- resData = replaceResData;
154
- switch (handlerThrowError) {
155
- case true:
156
- throw err;
157
- case false:
158
- return [2 /*return*/, resData];
159
- }
160
- if (throwError) {
161
- throw err;
162
- }
163
- return [2 /*return*/, resData];
164
- }
165
- });
166
- }); })];
167
- }
168
- });
169
- });
10
+ const { baseURL } = Object(baseOptions);
11
+ const instance = axios.create({
12
+ baseURL
13
+ });
14
+ return function createRequest(requestOptions, createOptions) {
15
+ const { method, url } = { ...requestOptions };
16
+ const {
17
+ baseURL: baseURL2,
18
+ cacheDataKey = `${method}:${baseURL2}${url}`,
19
+ cacheDataInStorage,
20
+ cacheKeyEquals = defaultEquals.default,
21
+ cacheTime,
22
+ indexDBName = "__apiCacheDatabase__"
23
+ } = {
24
+ ...baseOptions,
25
+ ...createOptions
26
+ };
27
+ const cache = new cache_index.default(
28
+ cacheDataInStorage,
29
+ cacheDataKey,
30
+ cacheTime,
31
+ indexDBName,
32
+ cacheKeyEquals
33
+ );
34
+ async function request(requestParam, options) {
35
+ const mergedOptions = {
36
+ ...baseOptions,
37
+ ...createOptions,
38
+ ...options
39
+ };
40
+ let {
41
+ requestMiddlewares = [],
42
+ axiosOptions: finalAxiosOptions = {},
43
+ requestParamsOrDataTransfer,
44
+ responseTransfer
45
+ } = mergedOptions;
46
+ let finalRequestOptions = { ...requestOptions, ...requestParam };
47
+ for (const middleware of requestMiddlewares) {
48
+ const {
49
+ axiosOptions: nextAxiosOptions = finalAxiosOptions,
50
+ requestOptions: nextRequestOptions = finalRequestOptions
51
+ } = await middleware(
52
+ { ...mergedOptions, axiosOptions: finalAxiosOptions },
53
+ finalRequestOptions
54
+ );
55
+ finalAxiosOptions = nextAxiosOptions;
56
+ finalRequestOptions = nextRequestOptions;
57
+ }
58
+ const { method: method2, url: url2, data = {}, params = {} } = finalRequestOptions;
59
+ let requestDataOrParams = params;
60
+ if (method2.toLowerCase() === "post") {
61
+ requestDataOrParams = data;
62
+ }
63
+ const { defaultMessageShower = console.error } = {
64
+ ...baseOptions,
65
+ ...createOptions,
66
+ ...options
67
+ };
68
+ const {
69
+ enableCache = false,
70
+ cacheData = false,
71
+ defaultErrorCodeHandler = defaultHandlers._defaultErrorCodeHandler.bind(null, defaultMessageShower),
72
+ defaultHttpErrorCodeHandler = defaultHandlers._defaultHttpErrorCodeHandler.bind(null, defaultMessageShower),
73
+ otherErrorHandler = defaultHandlers._defaultOtherErrorCodeHandler.bind(null, defaultMessageShower),
74
+ errorCodePath = "code",
75
+ cacheTime: cacheTime2 = 60,
76
+ errorCodeMap = {},
77
+ successCodes = ["0", "200"],
78
+ httpErrorCodeMap = {},
79
+ // axiosOptions = {},
80
+ throwError = true,
81
+ retryTimes = 0
82
+ } = { ...baseOptions, ...createOptions, ...options };
83
+ if (enableCache) {
84
+ const cacheItem = cache.getCache(requestDataOrParams);
85
+ if (cacheItem) {
86
+ return Promise.resolve(cacheItem);
87
+ }
88
+ }
89
+ function retry() {
90
+ if (retryTimes > 0) {
91
+ return request(requestParam, { ...options, retryTimes: retryTimes - 1 });
92
+ }
93
+ return null;
94
+ }
95
+ return instance.request({
96
+ method: method2,
97
+ url: url2,
98
+ data: requestParamsOrDataTransfer ? requestParamsOrDataTransfer(data) : data,
99
+ params: requestParamsOrDataTransfer ? requestParamsOrDataTransfer(params) : params,
100
+ ...finalAxiosOptions
101
+ }).then(
102
+ async (res) => {
103
+ const errorCode = String(at(res.data, errorCodePath));
104
+ let finalData = responseTransfer ? responseTransfer(res.data) : res.data;
105
+ if (successCodes.includes(errorCode)) {
106
+ if (cacheData) {
107
+ cache.setCache(requestDataOrParams, finalData, { cacheTime: cacheTime2 });
108
+ }
109
+ return finalData;
110
+ }
111
+ const { [errorCode]: customHandler = defaultErrorCodeHandler } = errorCodeMap;
112
+ const err = new error.default("服务端错误", "server", res);
113
+ if (typeof customHandler === "string") {
114
+ defaultMessageShower(customHandler);
115
+ const retryTask = retry();
116
+ if (retryTask) return retryTask;
117
+ } else {
118
+ const { replaceResData = res.data, throwError: handlerThrowError = "default" } = Object(
119
+ await customHandler(errorCode, res.data, res, {
120
+ ...requestOptions,
121
+ ...requestParam
122
+ })
123
+ );
124
+ const retryTask = retry();
125
+ if (retryTask) return retryTask;
126
+ res.data = replaceResData;
127
+ switch (handlerThrowError) {
128
+ case true:
129
+ throw err;
130
+ case false:
131
+ return res.data;
132
+ }
133
+ }
134
+ if (throwError) {
135
+ throw err;
136
+ }
137
+ return res.data;
138
+ },
139
+ async (error$1) => {
140
+ if (error$1.response) {
141
+ let resData = error$1;
142
+ const { [error$1.response.status]: customHandler = defaultHttpErrorCodeHandler } = httpErrorCodeMap;
143
+ const err = new error.default("服务端错误", "http", error$1);
144
+ if (typeof customHandler === "string") {
145
+ defaultMessageShower(customHandler);
146
+ const retryTask = retry();
147
+ if (retryTask) return retryTask;
148
+ } else {
149
+ const { replaceResData = error$1, throwError: handlerThrowError = "default" } = Object(
150
+ await customHandler(error$1.response.status, error$1, {
151
+ ...requestOptions,
152
+ ...requestParam
153
+ })
154
+ );
155
+ const retryTask = retry();
156
+ if (retryTask) return retryTask;
157
+ resData = replaceResData;
158
+ switch (handlerThrowError) {
159
+ case true:
160
+ throw err;
161
+ case false:
162
+ return resData;
163
+ }
164
+ }
165
+ if (throwError) {
166
+ throw err;
167
+ }
168
+ return resData;
169
+ } else {
170
+ let resData = error$1;
171
+ const err = new error.default("服务端错误", "http", error$1);
172
+ err.type = "http";
173
+ err.data = error$1;
174
+ const { replaceResData = error$1, throwError: handlerThrowError = "default" } = Object(await otherErrorHandler(error$1));
175
+ const retryTask = retry();
176
+ if (retryTask) return retryTask;
177
+ resData = replaceResData;
178
+ switch (handlerThrowError) {
179
+ case true:
180
+ throw err;
181
+ case false:
182
+ return resData;
183
+ }
184
+ if (throwError) {
185
+ throw err;
186
+ }
187
+ return resData;
188
+ }
170
189
  }
171
- request.clearCache = function () {
172
- cache.clear();
173
- };
174
- return request;
190
+ );
191
+ }
192
+ request.clearCache = () => {
193
+ cache.clear();
175
194
  };
195
+ return request;
196
+ };
176
197
  }
177
-
178
- module.exports = createBaseRequest;
198
+ exports.default = createBaseRequest;
@@ -1,45 +1,31 @@
1
- 'use strict';
2
-
3
- var react = require('react');
4
-
5
- /**
6
- * 创建 store getter
7
- * @param store store实例
8
- * @param getters getter函数
9
- * @param getterNameMaps 将 getter 函数和 getter 名称一一映射
10
- * @returns getter object
11
- */
12
- var createStoreGetter = function (store, getters, getterNameMaps) {
13
- var gettersObj = {};
14
- Object.keys(getters).forEach(function (key) {
15
- Object.defineProperty(gettersObj, getterNameMaps[key], {
16
- get: function () { return getters[key](store.get()); }
17
- });
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const react = require("react");
4
+ const createStoreGetter = (store, getters, getterNameMaps) => {
5
+ const gettersObj = {};
6
+ Object.keys(getters).forEach((key) => {
7
+ Object.defineProperty(gettersObj, getterNameMaps[key], {
8
+ get: () => getters[key](store.get())
18
9
  });
19
- return gettersObj;
10
+ });
11
+ return gettersObj;
20
12
  };
21
- /**
22
- *
23
- * @param store store实例
24
- * @param getters getter函数
25
- * @param getterNameMaps 将 getter 函数和 getter 名称一一映射
26
- * @returns getter memo hook
27
- */
28
- var createStoreGetterMemo = function (store, getters, getterNameMaps) {
29
- // 创建缓存数据 hook
30
- return function () {
31
- var storeData = store.use()[0];
32
- var reducedData = react.useMemo(function () {
33
- return Object.keys(getters).reduce(function (acc, key) {
34
- var mappedKey = getterNameMaps[key];
35
- var getterValue = getters[key](storeData);
36
- acc[mappedKey] = getterValue;
37
- return acc;
38
- }, {});
39
- }, [storeData]);
40
- return reducedData;
41
- };
13
+ const createStoreGetterMemo = (store, getters, getterNameMaps) => {
14
+ return () => {
15
+ const [storeData] = store.use();
16
+ const reducedData = react.useMemo(() => {
17
+ return Object.keys(getters).reduce(
18
+ (acc, key) => {
19
+ const mappedKey = getterNameMaps[key];
20
+ const getterValue = getters[key](storeData);
21
+ acc[mappedKey] = getterValue;
22
+ return acc;
23
+ },
24
+ {}
25
+ );
26
+ }, [storeData]);
27
+ return reducedData;
28
+ };
42
29
  };
43
-
44
30
  exports.createStoreGetter = createStoreGetter;
45
31
  exports.createStoreGetterMemo = createStoreGetterMemo;
@@ -1,98 +1,55 @@
1
- 'use strict';
2
-
3
- Object.defineProperty(exports, '__esModule', { value: true });
4
-
5
- var react = require('react');
6
-
1
+ "use strict";
2
+ Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
+ const react = require("react");
7
4
  function resolveHookState(nextState, currentState) {
8
- if (typeof nextState === 'function') {
9
- return nextState.length
10
- ? nextState(currentState)
11
- : nextState();
12
- }
13
- return nextState;
5
+ if (typeof nextState === "function") {
6
+ return nextState.length ? nextState(currentState) : nextState();
7
+ }
8
+ return nextState;
14
9
  }
15
- /** 判断当前环境是否为浏览器 */
16
- var isBrowser = typeof window !== 'undefined';
17
- /**
18
- * 只执行一次的 useEffect hook
19
- * @param effect 要执行的副作用函数
20
- */
21
- var useEffectOnce = function (effect) {
22
- react.useEffect(effect, []);
10
+ const isBrowser = typeof window !== "undefined";
11
+ const useEffectOnce = (effect) => {
12
+ react.useEffect(effect, []);
23
13
  };
24
- /**
25
- * 同构的 useLayoutEffect
26
- * 在服务端渲染时使用 useEffect,在浏览器环境使用 useLayoutEffect
27
- */
28
- var useIsomorphicLayoutEffect = isBrowser ? react.useLayoutEffect : react.useEffect;
29
- /**
30
- * 创建状态存储
31
- * 提供一个简单的状态管理解决方案,支持组件间状态共享
32
- *
33
- * @template S 状态类型
34
- * @param initialState 初始状态值或初始化函数
35
- * @returns 包含状态操作方法的对象
36
- */
14
+ const useIsomorphicLayoutEffect = isBrowser ? react.useLayoutEffect : react.useEffect;
37
15
  function createStateStore(initialState) {
38
- /**
39
- * 状态存储对象
40
- * 包含当前状态、设置状态的方法、状态更新器和监听器列表
41
- */
42
- var store = {
43
- state: initialState instanceof Function ? initialState() : initialState,
44
- setState: function (nextState) {
45
- store.state = resolveHookState(nextState, store.state);
46
- store.setters.forEach(function (setter) { return setter(store.state); });
47
- store.watchers.forEach(function (watcher) { return watcher(store.state); });
48
- },
49
- setters: [],
50
- watchers: [],
51
- };
52
- /**
53
- * 使用状态的 Hook
54
- * 返回当前状态和更新状态的函数
55
- *
56
- * @returns [当前状态, 状态更新函数]
57
- */
58
- var use = function () {
59
- // 使用 React 的 useState 创建组件本地状态
60
- var _a = react.useState(store.state), globalState = _a[0], stateSetter = _a[1];
61
- // 组件卸载时清理状态更新器
62
- useEffectOnce(function () { return function () {
63
- store.setters = store.setters.filter(function (setter) { return setter !== stateSetter; });
64
- }; });
65
- // 在组件挂载和更新时注册状态更新器
66
- useIsomorphicLayoutEffect(function () {
67
- if (!store.setters.includes(stateSetter)) {
68
- store.setters.push(stateSetter);
69
- }
70
- });
71
- return [globalState, store.setState];
72
- };
73
- /** 获取当前状态值 */
74
- var get = function () { return store.state; };
75
- /** 设置状态的函数引用 */
76
- var set = store.setState;
77
- /**
78
- * 监听状态变化
79
- * @param callback 状态变化时的回调函数
80
- * @returns 取消监听的函数
81
- */
82
- var watch = function (callback) {
83
- store.watchers.push(callback);
84
- var close = function () {
85
- store.watchers = store.watchers.filter(function (watcher) { return watcher !== callback; });
86
- };
87
- return close;
88
- };
89
- return {
90
- use: use,
91
- get: get,
92
- set: set,
93
- watch: watch,
16
+ const store = {
17
+ state: initialState instanceof Function ? initialState() : initialState,
18
+ setState(nextState) {
19
+ store.state = resolveHookState(nextState, store.state);
20
+ store.setters.forEach((setter) => setter(store.state));
21
+ store.watchers.forEach((watcher) => watcher(store.state));
22
+ },
23
+ setters: [],
24
+ watchers: []
25
+ };
26
+ const use = () => {
27
+ const [globalState, stateSetter] = react.useState(store.state);
28
+ useEffectOnce(() => () => {
29
+ store.setters = store.setters.filter((setter) => setter !== stateSetter);
30
+ });
31
+ useIsomorphicLayoutEffect(() => {
32
+ if (!store.setters.includes(stateSetter)) {
33
+ store.setters.push(stateSetter);
34
+ }
35
+ });
36
+ return [globalState, store.setState];
37
+ };
38
+ const get = () => store.state;
39
+ const set = store.setState;
40
+ const watch = (callback) => {
41
+ store.watchers.push(callback);
42
+ const close = () => {
43
+ store.watchers = store.watchers.filter((watcher) => watcher !== callback);
94
44
  };
45
+ return close;
46
+ };
47
+ return {
48
+ use,
49
+ get,
50
+ set,
51
+ watch
52
+ };
95
53
  }
96
-
97
54
  exports.default = createStateStore;
98
55
  exports.resolveHookState = resolveHookState;
@@ -1,10 +1,7 @@
1
- 'use strict';
2
-
3
- var index = require('./createGetter/index.cjs');
4
- var index$1 = require('./createStateStore/index.cjs');
5
-
6
-
7
-
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const index = require("./createGetter/index.cjs");
4
+ const index$1 = require("./createStateStore/index.cjs");
8
5
  exports.createStoreGetter = index.createStoreGetter;
9
6
  exports.createStoreGetterMemo = index.createStoreGetterMemo;
10
7
  exports.createStateStore = index$1.default;