@civet/core 1.0.0-rc2 → 1.0.0-rc3

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/Resource.js CHANGED
@@ -15,10 +15,12 @@ var _DataProvider = require("./DataProvider");
15
15
 
16
16
  var _useResource = _interopRequireDefault(require("./useResource"));
17
17
 
18
- var _excluded = ["children"];
18
+ var _excluded = ["dataProvider", "name", "query", "empty", "options", "persistent", "children"];
19
19
 
20
20
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
21
21
 
22
+ function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
23
+
22
24
  function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
23
25
 
24
26
  function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
@@ -29,16 +31,46 @@ function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) r
29
31
  * The provided DataProvider must not be replaced.
30
32
  */
31
33
  function Resource(_ref) {
32
- var children = _ref.children,
33
- props = _objectWithoutProperties(_ref, _excluded);
34
-
35
- var context = (0, _useResource["default"])(props);
36
- return /*#__PURE__*/_react["default"].createElement(_context.ResourceContext.Provider, {
37
- value: context
38
- }, children);
34
+ var dataProvider = _ref.dataProvider,
35
+ name = _ref.name,
36
+ query = _ref.query,
37
+ empty = _ref.empty,
38
+ options = _ref.options,
39
+ persistent = _ref.persistent,
40
+ children = _ref.children,
41
+ rest = _objectWithoutProperties(_ref, _excluded);
42
+
43
+ var context = (0, _useResource["default"])({
44
+ dataProvider: dataProvider,
45
+ name: name,
46
+ query: query,
47
+ empty: empty,
48
+ options: options,
49
+ persistent: persistent
50
+ });
51
+ return context.dataProvider.uiPlugins.reduceRight(function (next, Plugin) {
52
+ return function (result) {
53
+ return (
54
+ /*#__PURE__*/
55
+ // eslint-disable-next-line react/jsx-props-no-spreading
56
+ _react["default"].createElement(Plugin, _extends({}, rest, {
57
+ context: result
58
+ }), next)
59
+ );
60
+ };
61
+ }, function (result) {
62
+ return /*#__PURE__*/_react["default"].createElement(_context.ResourceContext.Provider, {
63
+ value: result
64
+ }, children);
65
+ })(context);
39
66
  }
40
67
 
41
68
  Resource.propTypes = {
69
+ /**
70
+ * DataProvider to be used for requests
71
+ */
72
+ dataProvider: _DataProvider.dataProviderPropType.isRequired,
73
+
42
74
  /**
43
75
  * Resource name
44
76
  */
@@ -59,11 +91,6 @@ Resource.propTypes = {
59
91
  */
60
92
  options: _propTypes["default"].object,
61
93
 
62
- /**
63
- * DataProvider to be used for requests
64
- */
65
- dataProvider: _DataProvider.dataProviderPropType.isRequired,
66
-
67
94
  /**
68
95
  * Whether stale data should be retained during the next request - this only applies if neither dataProvider nor name have changed, unless set to "very"
69
96
  */
@@ -15,7 +15,7 @@ var _Meta = _interopRequireDefault(require("./Meta"));
15
15
 
16
16
  var _uniqueIdentifier = _interopRequireDefault(require("./uniqueIdentifier"));
17
17
 
18
- var _excluded = ["name", "query", "empty", "options", "dataProvider", "persistent"],
18
+ var _excluded = ["dataProvider", "name", "query", "empty", "options", "persistent"],
19
19
  _excluded2 = ["data"];
20
20
 
21
21
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
@@ -51,14 +51,14 @@ function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) r
51
51
  * If not explicitly specified, necessary configuration is taken from the nearest <ConfigProvider>.
52
52
  * The provided DataProvider must not be replaced.
53
53
  */
54
- function useResource(props) {
55
- var name = props.name,
56
- query = props.query,
57
- empty = props.empty,
58
- options = props.options,
59
- dataProviderProp = props.dataProvider,
60
- persistent = props.persistent,
61
- rest = _objectWithoutProperties(props, _excluded);
54
+ function useResource(_ref) {
55
+ var dataProviderProp = _ref.dataProvider,
56
+ name = _ref.name,
57
+ query = _ref.query,
58
+ empty = _ref.empty,
59
+ options = _ref.options,
60
+ persistent = _ref.persistent,
61
+ rest = _objectWithoutProperties(_ref, _excluded);
62
62
 
63
63
  var configContext = (0, _context2.useConfigContext)();
64
64
  var currentDataProvider = dataProviderProp || configContext.dataProvider;
@@ -255,8 +255,7 @@ function useResource(props) {
255
255
  });
256
256
  }, [value, dataProvider, isLoading, isStale, notify]);
257
257
 
258
- var contextPlugins = Array.isArray(dataProvider.contextPlugins) ? dataProvider.contextPlugins : [];
259
- return contextPlugins.reduce(function (result, fn) {
258
+ return dataProvider.contextPlugins.reduce(function (result, fn) {
260
259
  return fn(result, rest);
261
260
  }, context);
262
261
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@civet/core",
3
- "version": "1.0.0-rc2",
3
+ "version": "1.0.0-rc3",
4
4
  "description": "Civet",
5
5
  "main": "./lib/index.js",
6
6
  "scripts": {
@@ -51,7 +51,7 @@
51
51
  "eslint-plugin-prettier": "^3.4.1",
52
52
  "eslint-plugin-react": "^7.21.5",
53
53
  "eslint-plugin-react-hooks": "^4.2.0",
54
- "prettier": "^2.3.2",
54
+ "prettier": "^2.6.2",
55
55
  "react": "^18.1.0",
56
56
  "react-dom": "^18.1.0",
57
57
  "rimraf": "^3.0.2"
package/src/Resource.js CHANGED
@@ -10,13 +10,26 @@ import useResource from './useResource';
10
10
  * If not explicitly specified, necessary configuration is taken from the nearest <ConfigProvider>.
11
11
  * The provided DataProvider must not be replaced.
12
12
  */
13
- function Resource({ children, ...props }) {
14
- const context = useResource(props);
13
+ function Resource({ dataProvider, name, query, empty, options, persistent, children, ...rest }) {
14
+ const context = useResource({ dataProvider, name, query, empty, options, persistent });
15
15
 
16
- return <ResourceContext.Provider value={context}>{children}</ResourceContext.Provider>;
16
+ return context.dataProvider.uiPlugins.reduceRight(
17
+ (next, Plugin) => (result) =>
18
+ (
19
+ // eslint-disable-next-line react/jsx-props-no-spreading
20
+ <Plugin {...rest} context={result}>
21
+ {next}
22
+ </Plugin>
23
+ ),
24
+ (result) => <ResourceContext.Provider value={result}>{children}</ResourceContext.Provider>,
25
+ )(context);
17
26
  }
18
27
 
19
28
  Resource.propTypes = {
29
+ /**
30
+ * DataProvider to be used for requests
31
+ */
32
+ dataProvider: dataProviderPropType.isRequired,
20
33
  /**
21
34
  * Resource name
22
35
  */
@@ -33,10 +46,6 @@ Resource.propTypes = {
33
46
  * DataProvider options for requests
34
47
  */
35
48
  options: PropTypes.object,
36
- /**
37
- * DataProvider to be used for requests
38
- */
39
- dataProvider: dataProviderPropType.isRequired,
40
49
  /**
41
50
  * Whether stale data should be retained during the next request - this only applies if neither dataProvider nor name have changed, unless set to "very"
42
51
  */
@@ -10,17 +10,15 @@ import uniqueIdentifier from './uniqueIdentifier';
10
10
  * If not explicitly specified, necessary configuration is taken from the nearest <ConfigProvider>.
11
11
  * The provided DataProvider must not be replaced.
12
12
  */
13
- function useResource(props) {
14
- const {
15
- name,
16
- query,
17
- empty,
18
- options,
19
- dataProvider: dataProviderProp,
20
- persistent,
21
- ...rest
22
- } = props;
23
-
13
+ function useResource({
14
+ dataProvider: dataProviderProp,
15
+ name,
16
+ query,
17
+ empty,
18
+ options,
19
+ persistent,
20
+ ...rest
21
+ }) {
24
22
  const configContext = useConfigContext();
25
23
  const currentDataProvider = dataProviderProp || configContext.dataProvider;
26
24
  const dataProvider = React.useMemo(() => currentDataProvider, []);
@@ -199,10 +197,7 @@ function useResource(props) {
199
197
  [value, dataProvider, isLoading, isStale, notify],
200
198
  );
201
199
 
202
- const contextPlugins = Array.isArray(dataProvider.contextPlugins)
203
- ? dataProvider.contextPlugins
204
- : [];
205
- return contextPlugins.reduce((result, fn) => fn(result, rest), context);
200
+ return dataProvider.contextPlugins.reduce((result, fn) => fn(result, rest), context);
206
201
  }
207
202
 
208
203
  export default useResource;