@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.
@@ -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';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aiszlab/relax",
3
- "version": "2.1.2",
3
+ "version": "2.1.3-beta.1",
4
4
  "description": "react utils collection",
5
5
  "exports": {
6
6
  ".": {