@civet/core 1.1.0 → 1.2.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/lib/DataProvider.js +8 -0
- package/lib/Meta.js +2 -1
- package/lib/useResource.js +20 -8
- package/package.json +1 -1
- package/src/DataProvider.js +6 -0
- package/src/Meta.js +2 -1
- package/src/useResource.js +10 -2
package/lib/DataProvider.js
CHANGED
|
@@ -68,6 +68,14 @@ var DataProvider = /*#__PURE__*/function () {
|
|
|
68
68
|
_createClass(DataProvider, [{
|
|
69
69
|
key: "extend",
|
|
70
70
|
value: function extend() {}
|
|
71
|
+
}, {
|
|
72
|
+
key: "createInstance",
|
|
73
|
+
value: function createInstance() {
|
|
74
|
+
return null;
|
|
75
|
+
}
|
|
76
|
+
}, {
|
|
77
|
+
key: "releaseInstance",
|
|
78
|
+
value: function releaseInstance() {}
|
|
71
79
|
}, {
|
|
72
80
|
key: "subscribe",
|
|
73
81
|
value: function subscribe(resource, handler) {
|
package/lib/Meta.js
CHANGED
|
@@ -18,10 +18,11 @@ function _defineProperties(target, props) { for (var i = 0; i < props.length; i+
|
|
|
18
18
|
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
|
|
19
19
|
|
|
20
20
|
var Meta = /*#__PURE__*/function () {
|
|
21
|
-
function Meta(base) {
|
|
21
|
+
function Meta(base, instance) {
|
|
22
22
|
_classCallCheck(this, Meta);
|
|
23
23
|
|
|
24
24
|
this.data = base == null ? {} : base;
|
|
25
|
+
this.instance = instance;
|
|
25
26
|
}
|
|
26
27
|
|
|
27
28
|
_createClass(Meta, [{
|
package/lib/useResource.js
CHANGED
|
@@ -62,9 +62,9 @@ function useResource(_ref) {
|
|
|
62
62
|
var configContext = (0, _context2.useConfigContext)();
|
|
63
63
|
var currentDataProvider = dataProviderProp || configContext.dataProvider;
|
|
64
64
|
|
|
65
|
-
var
|
|
66
|
-
|
|
67
|
-
|
|
65
|
+
var _React$useState = _react["default"].useState(currentDataProvider),
|
|
66
|
+
_React$useState2 = _slicedToArray(_React$useState, 1),
|
|
67
|
+
dataProvider = _React$useState2[0];
|
|
68
68
|
|
|
69
69
|
if (dataProvider == null) {
|
|
70
70
|
throw new Error('Unmet requirement: The DataProvider for the useResource hook is missing - Check your ConfigContext provider and the dataProvider property');
|
|
@@ -74,6 +74,18 @@ function useResource(_ref) {
|
|
|
74
74
|
throw new Error('Constant violation: The DataProvider provided to the useResource hook must not be replaced - Check your ConfigContext provider and the dataProvider property');
|
|
75
75
|
}
|
|
76
76
|
|
|
77
|
+
var _React$useState3 = _react["default"].useState(function () {
|
|
78
|
+
return dataProvider.createInstance();
|
|
79
|
+
}),
|
|
80
|
+
_React$useState4 = _slicedToArray(_React$useState3, 1),
|
|
81
|
+
instance = _React$useState4[0];
|
|
82
|
+
|
|
83
|
+
_react["default"].useEffect(function () {
|
|
84
|
+
return function () {
|
|
85
|
+
dataProvider.releaseInstance(instance);
|
|
86
|
+
};
|
|
87
|
+
}, []);
|
|
88
|
+
|
|
77
89
|
var nextRequestDetails = _react["default"].useMemo(function () {
|
|
78
90
|
return {
|
|
79
91
|
name: nextName,
|
|
@@ -83,7 +95,7 @@ function useResource(_ref) {
|
|
|
83
95
|
};
|
|
84
96
|
}, [nextName, nextQuery, nextEmpty, nextOptions]);
|
|
85
97
|
|
|
86
|
-
var _React$
|
|
98
|
+
var _React$useState5 = _react["default"].useState(function () {
|
|
87
99
|
var request = (0, _uniqueIdentifier["default"])();
|
|
88
100
|
var revision = (0, _uniqueIdentifier["default"])();
|
|
89
101
|
return {
|
|
@@ -107,9 +119,9 @@ function useResource(_ref) {
|
|
|
107
119
|
persistent: nextPersistent
|
|
108
120
|
};
|
|
109
121
|
}),
|
|
110
|
-
_React$
|
|
111
|
-
state = _React$
|
|
112
|
-
setState = _React$
|
|
122
|
+
_React$useState6 = _slicedToArray(_React$useState5, 2),
|
|
123
|
+
state = _React$useState6[0],
|
|
124
|
+
setState = _React$useState6[1];
|
|
113
125
|
|
|
114
126
|
var requestDetails = state.requestDetails,
|
|
115
127
|
request = state.request,
|
|
@@ -198,7 +210,7 @@ function useResource(_ref) {
|
|
|
198
210
|
_react["default"].useEffect(function () {
|
|
199
211
|
if (requestDetails.empty) return undefined;
|
|
200
212
|
var abortSignal = new _AbortSignal["default"]();
|
|
201
|
-
var meta = new _Meta["default"](_objectSpread({}, value.meta));
|
|
213
|
+
var meta = new _Meta["default"](_objectSpread({}, value.meta), instance);
|
|
202
214
|
|
|
203
215
|
var callback = function callback(error, done, data) {
|
|
204
216
|
setState(function (prevState) {
|
package/package.json
CHANGED
package/src/DataProvider.js
CHANGED
|
@@ -42,6 +42,12 @@ class DataProvider {
|
|
|
42
42
|
|
|
43
43
|
extend() {}
|
|
44
44
|
|
|
45
|
+
createInstance() {
|
|
46
|
+
return null;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
releaseInstance() {}
|
|
50
|
+
|
|
45
51
|
subscribe(resource, handler) {
|
|
46
52
|
if (resource == null) throw new Error('No resource name specified');
|
|
47
53
|
return this.notifier.subscribe(resource, handler);
|
package/src/Meta.js
CHANGED
package/src/useResource.js
CHANGED
|
@@ -21,7 +21,7 @@ function useResource({
|
|
|
21
21
|
}) {
|
|
22
22
|
const configContext = useConfigContext();
|
|
23
23
|
const currentDataProvider = dataProviderProp || configContext.dataProvider;
|
|
24
|
-
const dataProvider = React.
|
|
24
|
+
const [dataProvider] = React.useState(currentDataProvider);
|
|
25
25
|
if (dataProvider == null) {
|
|
26
26
|
throw new Error(
|
|
27
27
|
'Unmet requirement: The DataProvider for the useResource hook is missing - Check your ConfigContext provider and the dataProvider property',
|
|
@@ -33,6 +33,14 @@ function useResource({
|
|
|
33
33
|
);
|
|
34
34
|
}
|
|
35
35
|
|
|
36
|
+
const [instance] = React.useState(() => dataProvider.createInstance());
|
|
37
|
+
React.useEffect(
|
|
38
|
+
() => () => {
|
|
39
|
+
dataProvider.releaseInstance(instance);
|
|
40
|
+
},
|
|
41
|
+
[],
|
|
42
|
+
);
|
|
43
|
+
|
|
36
44
|
const nextRequestDetails = React.useMemo(
|
|
37
45
|
() => ({ name: nextName, query: nextQuery, empty: nextEmpty, options: nextOptions }),
|
|
38
46
|
[nextName, nextQuery, nextEmpty, nextOptions],
|
|
@@ -137,7 +145,7 @@ function useResource({
|
|
|
137
145
|
|
|
138
146
|
const abortSignal = new AbortSignal();
|
|
139
147
|
|
|
140
|
-
const meta = new Meta({ ...value.meta });
|
|
148
|
+
const meta = new Meta({ ...value.meta }, instance);
|
|
141
149
|
|
|
142
150
|
const callback = (error, done, data) => {
|
|
143
151
|
setState((prevState) => {
|