aidbox-react 1.3.6 → 1.4.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.
@@ -1,7 +1,8 @@
1
1
  import { RemoteData, RemoteDataResult } from '../libs/remoteData';
2
2
  export interface ServiceManager<S, F> {
3
- reload: () => Promise<RemoteDataResult<S, F>>;
4
- softReload: () => Promise<RemoteDataResult<S, F>>;
3
+ reload: () => void;
4
+ reloadAsync: () => Promise<RemoteDataResult<S, F>>;
5
+ softReloadAsync: () => Promise<RemoteDataResult<S, F>>;
5
6
  set: (dataOrFn: S | ((data: S) => S)) => void;
6
7
  }
7
8
  export declare function useService<S = any, F = any>(asyncFunction: () => Promise<RemoteDataResult<S, F>>, deps?: ReadonlyArray<any>): [RemoteData<S, F>, ServiceManager<S, F>];
@@ -8,6 +8,8 @@ function useService(asyncFunction, deps) {
8
8
  var _this = this;
9
9
  if (deps === void 0) { deps = []; }
10
10
  var _a = react_1.useState(remoteData_1.notAsked), remoteData = _a[0], setRemoteData = _a[1];
11
+ var _b = react_1.useState(0), reloadsCount = _b[0], setReloadsCount = _b[1];
12
+ var reload = react_1.useCallback(function () { return setReloadsCount(function (x) { return x + 1; }); }, []);
11
13
  var load = react_1.useCallback(function () { return tslib_1.__awaiter(_this, void 0, void 0, function () {
12
14
  var err_1;
13
15
  return tslib_1.__generator(this, function (_a) {
@@ -23,7 +25,7 @@ function useService(asyncFunction, deps) {
23
25
  }
24
26
  });
25
27
  }); }, deps);
26
- var softReload = react_1.useCallback(function () { return tslib_1.__awaiter(_this, void 0, void 0, function () {
28
+ var softReloadAsync = react_1.useCallback(function () { return tslib_1.__awaiter(_this, void 0, void 0, function () {
27
29
  var response;
28
30
  return tslib_1.__generator(this, function (_a) {
29
31
  switch (_a.label) {
@@ -35,7 +37,7 @@ function useService(asyncFunction, deps) {
35
37
  }
36
38
  });
37
39
  }); }, tslib_1.__spreadArrays(deps, [load]));
38
- var reload = react_1.useCallback(function () { return tslib_1.__awaiter(_this, void 0, void 0, function () {
40
+ var reloadAsync = react_1.useCallback(function () { return tslib_1.__awaiter(_this, void 0, void 0, function () {
39
41
  var response;
40
42
  return tslib_1.__generator(this, function (_a) {
41
43
  switch (_a.label) {
@@ -65,12 +67,13 @@ function useService(asyncFunction, deps) {
65
67
  });
66
68
  }); })();
67
69
  // eslint-disable-next-line react-hooks/exhaustive-deps
68
- }, tslib_1.__spreadArrays(deps, [load]));
70
+ }, tslib_1.__spreadArrays(deps, [reloadsCount, load]));
69
71
  return [
70
72
  remoteData,
71
73
  {
72
74
  reload: reload,
73
- softReload: softReload,
75
+ reloadAsync: reloadAsync,
76
+ softReloadAsync: softReloadAsync,
74
77
  set: function (dataOrFn) {
75
78
  if (typeof dataOrFn === 'function') {
76
79
  setRemoteData(function (rd) { return (remoteData_1.isSuccess(rd) ? remoteData_1.success(dataOrFn(rd.data)) : rd); });
@@ -1 +1 @@
1
- {"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/hooks/service.ts"],"names":[],"mappings":";;;;AAAA,+BAAyD;AAEzD,iDAAkH;AAQlH,SAAgB,UAAU,CACtB,aAAoD,EACpD,IAA6B;IAFjC,iBAsDC;IApDG,qBAAA,EAAA,SAA6B;IAEvB,IAAA,KAA8B,gBAAQ,CAAmB,qBAAQ,CAAC,EAAjE,UAAU,QAAA,EAAE,aAAa,QAAwC,CAAC;IAEzE,IAAM,IAAI,GAAG,mBAAW,CAAC;;;;;;oBAEV,qBAAM,aAAa,EAAE,EAAA;wBAA5B,sBAAO,SAAqB,EAAC;;;oBAE7B,sBAAO,oBAAO,CAAC,KAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,KAAG,CAAC,OAAO,CAAC,EAAC;;;;SAGtE,EAAE,IAAI,CAAC,CAAC;IAET,IAAM,UAAU,GAAG,mBAAW,CAAC;;;;wBACV,qBAAM,IAAI,EAAE,EAAA;;oBAAvB,QAAQ,GAAG,SAAY;oBAC7B,aAAa,CAAC,QAAQ,CAAC,CAAC;oBAExB,sBAAO,QAAQ,EAAC;;;SAEnB,yBAAM,IAAI,GAAE,IAAI,GAAE,CAAC;IAEpB,IAAM,MAAM,GAAG,mBAAW,CAAC;;;;;oBACvB,aAAa,CAAC,oBAAO,CAAC,CAAC;oBACN,qBAAM,IAAI,EAAE,EAAA;;oBAAvB,QAAQ,GAAG,SAAY;oBAC7B,aAAa,CAAC,QAAQ,CAAC,CAAC;oBAExB,sBAAO,QAAQ,EAAC;;;SAEnB,yBAAM,IAAI,GAAE,IAAI,GAAE,CAAC;IAEpB,iBAAS,CAAC;QACN,CAAC;;;;;wBACG,aAAa,CAAC,oBAAO,CAAC,CAAC;wBACvB,KAAA,aAAa,CAAA;wBAAC,qBAAM,IAAI,EAAE,EAAA;;wBAA1B,kBAAc,SAAY,EAAC,CAAC;;;;aAC/B,CAAC,EAAE,CAAC;QACL,uDAAuD;IAC3D,CAAC,yBAAM,IAAI,GAAE,IAAI,GAAE,CAAC;IAEpB,OAAO;QACH,UAAU;QACV;YACI,MAAM,QAAA;YACN,UAAU,YAAA;YACV,GAAG,EAAE,UAAC,QAA8B;gBAChC,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE;oBAChC,aAAa,CAAC,UAAC,EAAE,IAAK,OAAA,CAAC,sBAAS,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,oBAAO,CAAE,QAA2B,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAArE,CAAqE,CAAC,CAAC;iBAChG;qBAAM;oBACH,aAAa,CAAC,oBAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;iBACpC;YACL,CAAC;SACJ;KACJ,CAAC;AACN,CAAC;AAtDD,gCAsDC"}
1
+ {"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/hooks/service.ts"],"names":[],"mappings":";;;;AAAA,+BAAyD;AAEzD,iDAAkH;AAalH,SAAgB,UAAU,CACtB,aAAoD,EACpD,IAA6B;IAFjC,iBAyDC;IAvDG,qBAAA,EAAA,SAA6B;IAEvB,IAAA,KAA8B,gBAAQ,CAAmB,qBAAQ,CAAC,EAAjE,UAAU,QAAA,EAAE,aAAa,QAAwC,CAAC;IACnE,IAAA,KAAkC,gBAAQ,CAAC,CAAC,CAAC,EAA5C,YAAY,QAAA,EAAE,eAAe,QAAe,CAAC;IACpD,IAAM,MAAM,GAAG,mBAAW,CAAC,cAAM,OAAA,eAAe,CAAC,UAAC,CAAC,IAAK,OAAA,CAAC,GAAG,CAAC,EAAL,CAAK,CAAC,EAA7B,CAA6B,EAAE,EAAE,CAAC,CAAC;IAEpE,IAAM,IAAI,GAAG,mBAAW,CAAC;;;;;;oBAEV,qBAAM,aAAa,EAAE,EAAA;wBAA5B,sBAAO,SAAqB,EAAC;;;oBAE7B,sBAAO,oBAAO,CAAC,KAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,KAAG,CAAC,OAAO,CAAC,EAAC;;;;SAGtE,EAAE,IAAI,CAAC,CAAC;IAET,IAAM,eAAe,GAAG,mBAAW,CAAC;;;;wBACf,qBAAM,IAAI,EAAE,EAAA;;oBAAvB,QAAQ,GAAG,SAAY;oBAC7B,aAAa,CAAC,QAAQ,CAAC,CAAC;oBAExB,sBAAO,QAAQ,EAAC;;;SAEnB,yBAAM,IAAI,GAAE,IAAI,GAAE,CAAC;IAEpB,IAAM,WAAW,GAAG,mBAAW,CAAC;;;;;oBAC5B,aAAa,CAAC,oBAAO,CAAC,CAAC;oBACN,qBAAM,IAAI,EAAE,EAAA;;oBAAvB,QAAQ,GAAG,SAAY;oBAC7B,aAAa,CAAC,QAAQ,CAAC,CAAC;oBAExB,sBAAO,QAAQ,EAAC;;;SAEnB,yBAAM,IAAI,GAAE,IAAI,GAAE,CAAC;IAEpB,iBAAS,CAAC;QACN,CAAC;;;;;wBACG,aAAa,CAAC,oBAAO,CAAC,CAAC;wBACvB,KAAA,aAAa,CAAA;wBAAC,qBAAM,IAAI,EAAE,EAAA;;wBAA1B,kBAAc,SAAY,EAAC,CAAC;;;;aAC/B,CAAC,EAAE,CAAC;QACL,uDAAuD;IAC3D,CAAC,yBAAM,IAAI,GAAE,YAAY,EAAE,IAAI,GAAE,CAAC;IAElC,OAAO;QACH,UAAU;QACV;YACI,MAAM,QAAA;YACN,WAAW,aAAA;YACX,eAAe,iBAAA;YACf,GAAG,EAAE,UAAC,QAA8B;gBAChC,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE;oBAChC,aAAa,CAAC,UAAC,EAAE,IAAK,OAAA,CAAC,sBAAS,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,oBAAO,CAAE,QAA2B,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAArE,CAAqE,CAAC,CAAC;iBAChG;qBAAM;oBACH,aAAa,CAAC,oBAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;iBACpC;YACL,CAAC;SACJ;KACJ,CAAC;AACN,CAAC;AAzDD,gCAyDC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "aidbox-react",
3
- "version": "1.3.6",
3
+ "version": "1.4.0",
4
4
  "scripts": {
5
5
  "build": "tsc",
6
6
  "coverage": "jest --config=./jest.config.json --coverage --coverageReporters=text-lcov | coveralls",
@@ -3,8 +3,13 @@ import { useEffect, useState, useCallback } from 'react';
3
3
  import { loading, notAsked, RemoteData, RemoteDataResult, success, failure, isSuccess } from '../libs/remoteData';
4
4
 
5
5
  export interface ServiceManager<S, F> {
6
- reload: () => Promise<RemoteDataResult<S, F>>;
7
- softReload: () => Promise<RemoteDataResult<S, F>>;
6
+ // `reload` just sends signal to reload
7
+ reload: () => void;
8
+ // `reloadAsync` returns Promise and intialize loading from the loading state
9
+ reloadAsync: () => Promise<RemoteDataResult<S, F>>;
10
+ // `softReloadAsync` returns Promise and intialize just updates
11
+ // remoteData with success/failure state without preloading
12
+ softReloadAsync: () => Promise<RemoteDataResult<S, F>>;
8
13
  set: (dataOrFn: S | ((data: S) => S)) => void;
9
14
  }
10
15
 
@@ -13,6 +18,8 @@ export function useService<S = any, F = any>(
13
18
  deps: ReadonlyArray<any> = []
14
19
  ): [RemoteData<S, F>, ServiceManager<S, F>] {
15
20
  const [remoteData, setRemoteData] = useState<RemoteData<S, F>>(notAsked);
21
+ const [reloadsCount, setReloadsCount] = useState(0);
22
+ const reload = useCallback(() => setReloadsCount((x) => x + 1), []);
16
23
 
17
24
  const load = useCallback(async () => {
18
25
  try {
@@ -23,7 +30,7 @@ export function useService<S = any, F = any>(
23
30
  // eslint-disable-next-line react-hooks/exhaustive-deps
24
31
  }, deps);
25
32
 
26
- const softReload = useCallback(async () => {
33
+ const softReloadAsync = useCallback(async () => {
27
34
  const response = await load();
28
35
  setRemoteData(response);
29
36
 
@@ -31,7 +38,7 @@ export function useService<S = any, F = any>(
31
38
  // eslint-disable-next-line react-hooks/exhaustive-deps
32
39
  }, [...deps, load]);
33
40
 
34
- const reload = useCallback(async () => {
41
+ const reloadAsync = useCallback(async () => {
35
42
  setRemoteData(loading);
36
43
  const response = await load();
37
44
  setRemoteData(response);
@@ -46,13 +53,14 @@ export function useService<S = any, F = any>(
46
53
  setRemoteData(await load());
47
54
  })();
48
55
  // eslint-disable-next-line react-hooks/exhaustive-deps
49
- }, [...deps, load]);
56
+ }, [...deps, reloadsCount, load]);
50
57
 
51
58
  return [
52
59
  remoteData,
53
60
  {
54
61
  reload,
55
- softReload,
62
+ reloadAsync,
63
+ softReloadAsync,
56
64
  set: (dataOrFn: S | ((data: S) => S)) => {
57
65
  if (typeof dataOrFn === 'function') {
58
66
  setRemoteData((rd) => (isSuccess(rd) ? success((dataOrFn as (data: S) => S)(rd.data)) : rd));