@civet/core 1.0.0-rc2 → 1.0.0-rc5

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,
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
  */
package/lib/index.js CHANGED
@@ -83,6 +83,12 @@ Object.defineProperty(exports, "Resource", {
83
83
  return _Resource["default"];
84
84
  }
85
85
  });
86
+ Object.defineProperty(exports, "useResource", {
87
+ enumerable: true,
88
+ get: function get() {
89
+ return _useResource["default"];
90
+ }
91
+ });
86
92
  exports.ResourceConsumer = exports.ResourceProvider = exports.ConfigConsumer = void 0;
87
93
 
88
94
  var _context = require("./context");
@@ -105,6 +111,8 @@ var _Notifier = _interopRequireDefault(require("./Notifier"));
105
111
 
106
112
  var _Resource = _interopRequireDefault(require("./Resource"));
107
113
 
114
+ var _useResource = _interopRequireDefault(require("./useResource"));
115
+
108
116
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
109
117
 
110
118
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
@@ -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-rc5",
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,
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
  */
package/src/index.js CHANGED
@@ -11,4 +11,5 @@ export { dataProviderPropType, default as DataProvider, isDataProvider } from '.
11
11
  export { default as Meta } from './Meta';
12
12
  export { default as Notifier } from './Notifier';
13
13
  export { default as Resource } from './Resource';
14
+ export { default as useResource } from './useResource';
14
15
  export { useConfigContext, useResourceContext };
@@ -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;