Skip to content
This repository was archived by the owner on May 27, 2022. It is now read-only.

Commit 26afae6

Browse files
authored
Merge pull request #98 from data-provider/release
Release v1.3.0
2 parents fffa8f8 + 2ca1629 commit 26afae6

File tree

43 files changed

+14858
-13727
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

43 files changed

+14858
-13727
lines changed

.eslintrc.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
"settings": {
2525
"react": {
2626
"pragma": "React",
27-
"version": "^16.7.0"
27+
"version": "^17.0.0"
2828
}
2929
}
3030
}

CHANGELOG.md

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,17 @@ and this project adheres to [Semantic Versioning](http://semver.org/).
1010
### Fixed
1111
### Removed
1212

13+
## [1.3.0] - 2020-10-31
14+
15+
### Added
16+
- feat(hocs): Wrap Components displayNames in HOCs
17+
18+
### Changed
19+
- chore(deps): Update dependencies
20+
21+
### Fixed
22+
- fix(usePolling): Do not modify original intervals array when check sorting
23+
1324
## [1.2.0] - 2020-06-21
1425

1526
### Added

package-lock.json

Lines changed: 2820 additions & 3609 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 27 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@data-provider/react",
3-
"version": "1.2.0",
3+
"version": "1.3.0",
44
"description": "React bindings for @data-provider",
55
"keywords": [
66
"data-provider",
@@ -46,38 +46,38 @@
4646
"react": ">=16.8.0"
4747
},
4848
"devDependencies": {
49-
"@babel/core": "7.10.3",
50-
"@babel/preset-env": "7.10.3",
51-
"@babel/preset-react": "7.10.1",
52-
"@data-provider/core": "2.5.2",
53-
"@rollup/plugin-babel": "5.0.3",
54-
"@rollup/plugin-commonjs": "13.0.0",
49+
"@babel/core": "7.12.3",
50+
"@babel/preset-env": "7.12.1",
51+
"@babel/preset-react": "7.12.1",
52+
"@data-provider/core": "2.6.1",
53+
"@rollup/plugin-babel": "5.2.1",
54+
"@rollup/plugin-commonjs": "16.0.0",
5555
"@rollup/plugin-json": "4.1.0",
56-
"@rollup/plugin-node-resolve": "8.0.1",
57-
"@testing-library/jest-dom": "5.10.1",
58-
"@testing-library/react": "10.3.0",
56+
"@rollup/plugin-node-resolve": "10.0.0",
57+
"@testing-library/jest-dom": "5.11.5",
58+
"@testing-library/react": "11.1.0",
5959
"babel-core": "7.0.0-bridge.0",
6060
"babel-eslint": "10.1.0",
61-
"babel-jest": "26.0.1",
61+
"babel-jest": "26.6.1",
6262
"babel-polyfill": "6.26.0",
6363
"coveralls": "3.0.9",
64-
"eslint": "7.3.0",
65-
"eslint-config-prettier": "6.11.0",
64+
"eslint": "7.12.1",
65+
"eslint-config-prettier": "6.15.0",
6666
"eslint-plugin-prettier": "3.1.4",
67-
"eslint-plugin-react": "7.20.0",
68-
"eslint-plugin-react-hooks": "4.0.4",
69-
"husky": "4.2.5",
70-
"jest": "26.0.1",
71-
"lint-staged": "10.2.11",
72-
"prettier": "2.0.5",
73-
"react": "16.13.1",
74-
"react-dom": "16.13.1",
75-
"react-redux": "7.2.0",
76-
"react-test-renderer": "16.13.1",
67+
"eslint-plugin-react": "7.21.5",
68+
"eslint-plugin-react-hooks": "4.2.0",
69+
"husky": "4.3.0",
70+
"jest": "26.6.1",
71+
"lint-staged": "10.5.0",
72+
"prettier": "2.1.2",
73+
"react": "17.0.1",
74+
"react-dom": "17.0.1",
75+
"react-redux": "7.2.2",
76+
"react-test-renderer": "17.0.1",
7777
"redux": "4.0.5",
78-
"rollup": "2.17.1",
79-
"rollup-plugin-terser": "6.1.0",
80-
"sinon": "9.0.2"
78+
"rollup": "2.32.1",
79+
"rollup-plugin-terser": "7.0.2",
80+
"sinon": "9.2.1"
8181
},
8282
"lint-staged": {
8383
"*.js": "eslint --resolve-plugins-relative-to=.",
@@ -92,6 +92,6 @@
9292
}
9393
},
9494
"engines": {
95-
"node": "12.x || 14.x"
95+
"node": "12.x || 14.x || 15.x"
9696
}
9797
}

rollup.config.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ const BASE_PLUGINS = [
2525
}),
2626
json(),
2727
babel({
28+
babelHelpers: "bundled",
2829
babelrc: false,
2930
presets: ["@babel/env"],
3031
}),

sonar-project.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
sonar.organization=data-provider
22
sonar.projectKey=data-provider-react
3-
sonar.projectVersion=1.2.0
3+
sonar.projectVersion=1.3.0
44

55
sonar.sources=src,test
66
sonar.exclusions=node_modules/**

src/usePolling.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ class PollingHandler {
2525
}
2626

2727
_checkInterval() {
28-
const sortedIntervals = this._intervalTimes.sort((a, b) => a - b);
28+
const sortedIntervals = [...this._intervalTimes].sort((a, b) => a - b);
2929
if (sortedIntervals[0] !== this._currentIntervalTime) {
3030
this._clearInterval();
3131
this._currentIntervalTime = sortedIntervals[0];

src/withDataProvider.js

Lines changed: 94 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,9 @@ const isFunction = (provider) => {
1717

1818
const defaultKeys = ["data", "loading", "error", "loaded"];
1919

20+
const getDisplayName = (WrappedComponent) =>
21+
WrappedComponent.displayName || WrappedComponent.name || "Component";
22+
2023
const useProvider = (provider, props) => {
2124
return useMemo(() => {
2225
if (isFunction(provider)) {
@@ -72,65 +75,97 @@ export const withDataProviderBranch = (provider, keys) => (
7275
Component,
7376
LoadingComponent,
7477
ErrorComponent
75-
) => (props) => {
76-
const providerToRead = useProvider(provider, props);
77-
const { dataProp, loadingProp, errorProp, loading, error } = useDataProviderCustomProps(
78-
providerToRead,
79-
keys
80-
);
81-
if (loading) {
82-
if (LoadingComponent) {
83-
return <LoadingComponent {...props} {...loadingProp} />;
78+
) => {
79+
const WithDataProviderBranch = (props) => {
80+
const providerToRead = useProvider(provider, props);
81+
const { dataProp, loadingProp, errorProp, loading, error } = useDataProviderCustomProps(
82+
providerToRead,
83+
keys
84+
);
85+
if (loading) {
86+
if (LoadingComponent) {
87+
return <LoadingComponent {...props} {...loadingProp} />;
88+
}
89+
return null;
8490
}
85-
return null;
86-
}
87-
if (error) {
88-
if (ErrorComponent) {
89-
return <ErrorComponent {...props} {...errorProp} />;
91+
if (error) {
92+
if (ErrorComponent) {
93+
return <ErrorComponent {...props} {...errorProp} />;
94+
}
95+
return null;
9096
}
91-
return null;
92-
}
93-
return <Component {...props} {...dataProp} />;
94-
};
95-
96-
export const withDataProvider = (provider, keys) => (Component) => (props) => {
97-
const providerToRead = useProvider(provider, props);
98-
const { dataProp, loadingProp, errorProp } = useDataProviderCustomProps(providerToRead, keys);
99-
return <Component {...props} {...dataProp} {...loadingProp} {...errorProp} />;
100-
};
101-
102-
export const withData = (provider, key) => (Component) => (props) => {
103-
const providerToRead = useProvider(provider, props);
104-
const { dataProp } = useDataCustomProp(providerToRead, key);
105-
return <Component {...props} {...dataProp} />;
106-
};
107-
108-
export const withLoading = (provider, key) => (Component) => (props) => {
109-
const providerToRead = useProvider(provider, props);
110-
const { loadingProp } = useLoadingCustomProp(providerToRead, key);
111-
return <Component {...props} {...loadingProp} />;
112-
};
113-
114-
export const withLoaded = (provider, key) => (Component) => (props) => {
115-
const providerToRead = useProvider(provider, props);
116-
const { loadedProp } = useLoadedCustomProp(providerToRead, key);
117-
return <Component {...props} {...loadedProp} />;
118-
};
119-
120-
export const withError = (provider, key) => (Component) => (props) => {
121-
const providerToRead = useProvider(provider, props);
122-
const { errorProp } = useErrorCustomProp(providerToRead, key);
123-
return <Component {...props} {...errorProp} />;
124-
};
125-
126-
export const withPolling = (provider, interval) => (Component) => (props) => {
127-
const providerToRead = useProvider(provider, props);
128-
usePolling(providerToRead, interval);
129-
return <Component {...props} />;
130-
};
131-
132-
export const withRefresh = (provider) => (Component) => (props) => {
133-
const providerToRead = useProvider(provider, props);
134-
useRefresh(providerToRead);
135-
return <Component {...props} />;
97+
return <Component {...props} {...dataProp} />;
98+
};
99+
WithDataProviderBranch.displayName = `WithDataProviderBranch${getDisplayName(Component)}`;
100+
return WithDataProviderBranch;
101+
};
102+
103+
export const withDataProvider = (provider, keys) => (Component) => {
104+
const WithDataProvider = (props) => {
105+
const providerToRead = useProvider(provider, props);
106+
const { dataProp, loadingProp, errorProp } = useDataProviderCustomProps(providerToRead, keys);
107+
return <Component {...props} {...dataProp} {...loadingProp} {...errorProp} />;
108+
};
109+
WithDataProvider.displayName = `WithDataProvider${getDisplayName(Component)}`;
110+
return WithDataProvider;
111+
};
112+
113+
export const withData = (provider, key) => (Component) => {
114+
const WithData = (props) => {
115+
const providerToRead = useProvider(provider, props);
116+
const { dataProp } = useDataCustomProp(providerToRead, key);
117+
return <Component {...props} {...dataProp} />;
118+
};
119+
WithData.displayName = `WithData${getDisplayName(Component)}`;
120+
return WithData;
121+
};
122+
123+
export const withLoading = (provider, key) => (Component) => {
124+
const WithLoading = (props) => {
125+
const providerToRead = useProvider(provider, props);
126+
const { loadingProp } = useLoadingCustomProp(providerToRead, key);
127+
return <Component {...props} {...loadingProp} />;
128+
};
129+
WithLoading.displayName = `WithLoading${getDisplayName(Component)}`;
130+
return WithLoading;
131+
};
132+
133+
export const withLoaded = (provider, key) => (Component) => {
134+
const WithLoaded = (props) => {
135+
const providerToRead = useProvider(provider, props);
136+
const { loadedProp } = useLoadedCustomProp(providerToRead, key);
137+
return <Component {...props} {...loadedProp} />;
138+
};
139+
WithLoaded.displayName = `WithLoaded${getDisplayName(Component)}`;
140+
return WithLoaded;
141+
};
142+
143+
export const withError = (provider, key) => (Component) => {
144+
const WithError = (props) => {
145+
const providerToRead = useProvider(provider, props);
146+
const { errorProp } = useErrorCustomProp(providerToRead, key);
147+
return <Component {...props} {...errorProp} />;
148+
};
149+
WithError.displayName = `WithError${getDisplayName(Component)}`;
150+
return WithError;
151+
};
152+
153+
export const withPolling = (provider, interval) => (Component) => {
154+
const WithPolling = (props) => {
155+
const providerToRead = useProvider(provider, props);
156+
usePolling(providerToRead, interval);
157+
return <Component {...props} />;
158+
};
159+
WithPolling.displayName = `WithPolling${getDisplayName(Component)}`;
160+
return WithPolling;
161+
};
162+
163+
export const withRefresh = (provider) => (Component) => {
164+
const WithRefresh = (props) => {
165+
const providerToRead = useProvider(provider, props);
166+
useRefresh(providerToRead);
167+
return <Component {...props} />;
168+
};
169+
WithRefresh.displayName = `WithRefresh${getDisplayName(Component)}`;
170+
return WithRefresh;
136171
};

0 commit comments

Comments
 (0)