@aiszlab/relax 2.1.2 → 2.1.3-beta.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.
- package/dist/hooks/use-request.cjs +83 -0
- package/dist/hooks/use-request.d.ts +53 -0
- package/dist/hooks/use-request.mjs +81 -0
- package/dist/index.cjs +2 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.mjs +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var _regenerator = require('@babel/runtime/helpers/regenerator');
|
|
4
|
+
var _asyncToGenerator = require('@babel/runtime/helpers/asyncToGenerator');
|
|
5
|
+
var _slicedToArray = require('@babel/runtime/helpers/slicedToArray');
|
|
6
|
+
var react = require('react');
|
|
7
|
+
var useEvent = require('./use-event.cjs');
|
|
8
|
+
var useMounted = require('./use-mounted.cjs');
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* @author murukal
|
|
12
|
+
*
|
|
13
|
+
* @description
|
|
14
|
+
* wraps an async request function, tracking loading / error / data state.
|
|
15
|
+
* when `auto` is true the request fires automatically on mount.
|
|
16
|
+
*/
|
|
17
|
+
var useRequest = function useRequest(request) {
|
|
18
|
+
var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
|
|
19
|
+
_ref$auto = _ref.auto,
|
|
20
|
+
auto = _ref$auto === void 0 ? false : _ref$auto,
|
|
21
|
+
thenCallback = _ref.then,
|
|
22
|
+
catchCallback = _ref["catch"],
|
|
23
|
+
finallyCallback = _ref["finally"];
|
|
24
|
+
var _useState = react.useState(null),
|
|
25
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
26
|
+
data = _useState2[0],
|
|
27
|
+
setData = _useState2[1];
|
|
28
|
+
var _useState3 = react.useState(null),
|
|
29
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
|
30
|
+
error = _useState4[0],
|
|
31
|
+
setError = _useState4[1];
|
|
32
|
+
var _useState5 = react.useState(false),
|
|
33
|
+
_useState6 = _slicedToArray(_useState5, 2),
|
|
34
|
+
loading = _useState6[0],
|
|
35
|
+
setLoading = _useState6[1];
|
|
36
|
+
var isMountedRef = react.useRef(false);
|
|
37
|
+
var _request = useEvent.useEvent(request);
|
|
38
|
+
var _then = useEvent.useEvent(function (_data) {
|
|
39
|
+
thenCallback === null || thenCallback === void 0 || thenCallback(_data);
|
|
40
|
+
return _data;
|
|
41
|
+
});
|
|
42
|
+
var _catch = useEvent.useEvent(function (error) {
|
|
43
|
+
catchCallback === null || catchCallback === void 0 || catchCallback(error);
|
|
44
|
+
setError(error);
|
|
45
|
+
return null;
|
|
46
|
+
});
|
|
47
|
+
var _finally = useEvent.useEvent(function () {
|
|
48
|
+
finallyCallback === null || finallyCallback === void 0 || finallyCallback();
|
|
49
|
+
});
|
|
50
|
+
var run = react.useCallback(/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee() {
|
|
51
|
+
var result,
|
|
52
|
+
_args = arguments;
|
|
53
|
+
return _regenerator().w(function (_context) {
|
|
54
|
+
while (1) switch (_context.n) {
|
|
55
|
+
case 0:
|
|
56
|
+
setLoading(true);
|
|
57
|
+
setError(null);
|
|
58
|
+
_context.n = 1;
|
|
59
|
+
return _request.apply(void 0, _args).then(_then)["catch"](_catch)["finally"](_finally);
|
|
60
|
+
case 1:
|
|
61
|
+
result = _context.v;
|
|
62
|
+
setData(result);
|
|
63
|
+
setLoading(false);
|
|
64
|
+
case 2:
|
|
65
|
+
return _context.a(2);
|
|
66
|
+
}
|
|
67
|
+
}, _callee);
|
|
68
|
+
})), []);
|
|
69
|
+
useMounted.useMounted(function () {
|
|
70
|
+
if (isMountedRef.current) return;
|
|
71
|
+
if (!auto) return;
|
|
72
|
+
isMountedRef.current = true;
|
|
73
|
+
run();
|
|
74
|
+
});
|
|
75
|
+
return {
|
|
76
|
+
data: data,
|
|
77
|
+
error: error,
|
|
78
|
+
loading: loading,
|
|
79
|
+
run: run
|
|
80
|
+
};
|
|
81
|
+
};
|
|
82
|
+
|
|
83
|
+
exports.useRequest = useRequest;
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
type UsingRequest<T> = {
|
|
2
|
+
/**
|
|
3
|
+
* @description
|
|
4
|
+
* auto request when component mounts
|
|
5
|
+
*/
|
|
6
|
+
auto?: boolean;
|
|
7
|
+
/**
|
|
8
|
+
* @description
|
|
9
|
+
* called when the request succeeds, like Promise.then
|
|
10
|
+
*/
|
|
11
|
+
then?: (data: T) => void;
|
|
12
|
+
/**
|
|
13
|
+
* @description
|
|
14
|
+
* called when the request fails, like Promise.catch
|
|
15
|
+
*/
|
|
16
|
+
catch?: (error: Error) => void;
|
|
17
|
+
/**
|
|
18
|
+
* @description
|
|
19
|
+
* called when the request completes (success or failure), like Promise.finally
|
|
20
|
+
*/
|
|
21
|
+
finally?: () => void;
|
|
22
|
+
};
|
|
23
|
+
type UsedRequest<T> = {
|
|
24
|
+
/**
|
|
25
|
+
* @description
|
|
26
|
+
* response data
|
|
27
|
+
*/
|
|
28
|
+
data: T | null;
|
|
29
|
+
/**
|
|
30
|
+
* @description
|
|
31
|
+
* error caught from the request
|
|
32
|
+
*/
|
|
33
|
+
error: Error | null;
|
|
34
|
+
/**
|
|
35
|
+
* @description
|
|
36
|
+
* whether the request is in progress
|
|
37
|
+
*/
|
|
38
|
+
loading: boolean;
|
|
39
|
+
/**
|
|
40
|
+
* @description
|
|
41
|
+
* manually trigger the request with the same arguments as the source function
|
|
42
|
+
*/
|
|
43
|
+
run: (...args: any[]) => Promise<void>;
|
|
44
|
+
};
|
|
45
|
+
/**
|
|
46
|
+
* @author murukal
|
|
47
|
+
*
|
|
48
|
+
* @description
|
|
49
|
+
* wraps an async request function, tracking loading / error / data state.
|
|
50
|
+
* when `auto` is true the request fires automatically on mount.
|
|
51
|
+
*/
|
|
52
|
+
export declare const useRequest: <T>(request: (...args: any[]) => Promise<T>, { auto, then: thenCallback, catch: catchCallback, finally: finallyCallback, }?: UsingRequest<T>) => UsedRequest<T>;
|
|
53
|
+
export {};
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import _regenerator from '@babel/runtime/helpers/regenerator';
|
|
2
|
+
import _asyncToGenerator from '@babel/runtime/helpers/asyncToGenerator';
|
|
3
|
+
import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
|
|
4
|
+
import { useState, useRef, useCallback } from 'react';
|
|
5
|
+
import { useEvent } from './use-event.mjs';
|
|
6
|
+
import { useMounted } from './use-mounted.mjs';
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* @author murukal
|
|
10
|
+
*
|
|
11
|
+
* @description
|
|
12
|
+
* wraps an async request function, tracking loading / error / data state.
|
|
13
|
+
* when `auto` is true the request fires automatically on mount.
|
|
14
|
+
*/
|
|
15
|
+
var useRequest = function useRequest(request) {
|
|
16
|
+
var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
|
|
17
|
+
_ref$auto = _ref.auto,
|
|
18
|
+
auto = _ref$auto === void 0 ? false : _ref$auto,
|
|
19
|
+
thenCallback = _ref.then,
|
|
20
|
+
catchCallback = _ref["catch"],
|
|
21
|
+
finallyCallback = _ref["finally"];
|
|
22
|
+
var _useState = useState(null),
|
|
23
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
24
|
+
data = _useState2[0],
|
|
25
|
+
setData = _useState2[1];
|
|
26
|
+
var _useState3 = useState(null),
|
|
27
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
|
28
|
+
error = _useState4[0],
|
|
29
|
+
setError = _useState4[1];
|
|
30
|
+
var _useState5 = useState(false),
|
|
31
|
+
_useState6 = _slicedToArray(_useState5, 2),
|
|
32
|
+
loading = _useState6[0],
|
|
33
|
+
setLoading = _useState6[1];
|
|
34
|
+
var isMountedRef = useRef(false);
|
|
35
|
+
var _request = useEvent(request);
|
|
36
|
+
var _then = useEvent(function (_data) {
|
|
37
|
+
thenCallback === null || thenCallback === void 0 || thenCallback(_data);
|
|
38
|
+
return _data;
|
|
39
|
+
});
|
|
40
|
+
var _catch = useEvent(function (error) {
|
|
41
|
+
catchCallback === null || catchCallback === void 0 || catchCallback(error);
|
|
42
|
+
setError(error);
|
|
43
|
+
return null;
|
|
44
|
+
});
|
|
45
|
+
var _finally = useEvent(function () {
|
|
46
|
+
finallyCallback === null || finallyCallback === void 0 || finallyCallback();
|
|
47
|
+
});
|
|
48
|
+
var run = useCallback(/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee() {
|
|
49
|
+
var result,
|
|
50
|
+
_args = arguments;
|
|
51
|
+
return _regenerator().w(function (_context) {
|
|
52
|
+
while (1) switch (_context.n) {
|
|
53
|
+
case 0:
|
|
54
|
+
setLoading(true);
|
|
55
|
+
setError(null);
|
|
56
|
+
_context.n = 1;
|
|
57
|
+
return _request.apply(void 0, _args).then(_then)["catch"](_catch)["finally"](_finally);
|
|
58
|
+
case 1:
|
|
59
|
+
result = _context.v;
|
|
60
|
+
setData(result);
|
|
61
|
+
setLoading(false);
|
|
62
|
+
case 2:
|
|
63
|
+
return _context.a(2);
|
|
64
|
+
}
|
|
65
|
+
}, _callee);
|
|
66
|
+
})), []);
|
|
67
|
+
useMounted(function () {
|
|
68
|
+
if (isMountedRef.current) return;
|
|
69
|
+
if (!auto) return;
|
|
70
|
+
isMountedRef.current = true;
|
|
71
|
+
run();
|
|
72
|
+
});
|
|
73
|
+
return {
|
|
74
|
+
data: data,
|
|
75
|
+
error: error,
|
|
76
|
+
loading: loading,
|
|
77
|
+
run: run
|
|
78
|
+
};
|
|
79
|
+
};
|
|
80
|
+
|
|
81
|
+
export { useRequest };
|
package/dist/index.cjs
CHANGED
|
@@ -22,6 +22,7 @@ var useFocus = require('./hooks/use-focus.cjs');
|
|
|
22
22
|
var useMemorized = require('./hooks/use-memorized.cjs');
|
|
23
23
|
var useMutateObserver = require('./hooks/use-mutate-observer.cjs');
|
|
24
24
|
var useRaf = require('./hooks/use-raf.cjs');
|
|
25
|
+
var useRequest = require('./hooks/use-request.cjs');
|
|
25
26
|
var useDevicePixelRatio = require('./hooks/use-device-pixel-ratio.cjs');
|
|
26
27
|
var useIdentity = require('./hooks/use-identity.cjs');
|
|
27
28
|
var useMediaQuery = require('./hooks/use-media-query.cjs');
|
|
@@ -119,6 +120,7 @@ exports.useFocus = useFocus.useFocus;
|
|
|
119
120
|
exports.useMemorized = useMemorized.useMemorized;
|
|
120
121
|
exports.useMutateObserver = useMutateObserver.useMutateObserver;
|
|
121
122
|
exports.useRaf = useRaf.useRaf;
|
|
123
|
+
exports.useRequest = useRequest.useRequest;
|
|
122
124
|
exports.useDevicePixelRatio = useDevicePixelRatio.useDevicePixelRatio;
|
|
123
125
|
exports.useIdentity = useIdentity.useIdentity;
|
|
124
126
|
exports.useMediaQuery = useMediaQuery.useMediaQuery;
|
package/dist/index.d.ts
CHANGED
|
@@ -24,6 +24,7 @@ export { useFocus } from "./hooks/use-focus";
|
|
|
24
24
|
export { useMemorized } from "./hooks/use-memorized";
|
|
25
25
|
export { useMutateObserver } from "./hooks/use-mutate-observer";
|
|
26
26
|
export { useRaf } from "./hooks/use-raf";
|
|
27
|
+
export { useRequest } from "./hooks/use-request";
|
|
27
28
|
export { useDevicePixelRatio } from "./hooks/use-device-pixel-ratio";
|
|
28
29
|
export { useIdentity } from "./hooks/use-identity";
|
|
29
30
|
export { useMediaQuery } from "./hooks/use-media-query";
|
package/dist/index.mjs
CHANGED
|
@@ -20,6 +20,7 @@ export { useFocus } from './hooks/use-focus.mjs';
|
|
|
20
20
|
export { useMemorized } from './hooks/use-memorized.mjs';
|
|
21
21
|
export { useMutateObserver } from './hooks/use-mutate-observer.mjs';
|
|
22
22
|
export { useRaf } from './hooks/use-raf.mjs';
|
|
23
|
+
export { useRequest } from './hooks/use-request.mjs';
|
|
23
24
|
export { useDevicePixelRatio } from './hooks/use-device-pixel-ratio.mjs';
|
|
24
25
|
export { useIdentity } from './hooks/use-identity.mjs';
|
|
25
26
|
export { useMediaQuery } from './hooks/use-media-query.mjs';
|