From 06fd37eaf6bd2d229c5502f18ac236f8c33df87a Mon Sep 17 00:00:00 2001 From: Gildas Garcia Date: Sat, 11 May 2019 17:00:47 +0200 Subject: [PATCH 1/3] Upgrade redux-saga - [x] Upgrade and related fixes - [ ] Fix demo login - [ ] Fix demo warnings --- examples/demo/package.json | 2 +- packages/ra-core/package.json | 3 +- .../ra-core/src/sideEffect/accumulate.spec.ts | 7 +- packages/ra-core/src/sideEffect/accumulate.ts | 5 +- packages/ra-core/src/sideEffect/undo.spec.ts | 18 +++- packages/ra-realtime/package.json | 4 +- yarn.lock | 97 ++++++++++++++++--- 7 files changed, 110 insertions(+), 26 deletions(-) diff --git a/examples/demo/package.json b/examples/demo/package.json index 874f8879053..a17fbabf839 100644 --- a/examples/demo/package.json +++ b/examples/demo/package.json @@ -24,7 +24,7 @@ "react-scripts": "^3.0.0", "recompose": "~0.26.0", "redux-form": "~8.2.0", - "redux-saga": "~0.16.0" + "redux-saga": "^1.0.0" }, "scripts": { "start": "react-scripts start", diff --git a/packages/ra-core/package.json b/packages/ra-core/package.json index a209a0fe66f..8dcd732d114 100644 --- a/packages/ra-core/package.json +++ b/packages/ra-core/package.json @@ -27,6 +27,7 @@ "watch": "rimraf ./lib && tsc --watch" }, "devDependencies": { + "@redux-saga/testing-utils": "^1.0.2", "@types/history": "^4.7.2", "@types/node-polyglot": "^0.4.31", "@types/react-router": "^4.4.4", @@ -64,7 +65,7 @@ "recompose": "~0.26.0", "redux": "^3.7.2 || ^4.0.0", "redux-form": "~8.2.0", - "redux-saga": "~0.16.0", + "redux-saga": "^1.0.0", "reselect": "~3.0.0" } } diff --git a/packages/ra-core/src/sideEffect/accumulate.spec.ts b/packages/ra-core/src/sideEffect/accumulate.spec.ts index 3bc3ca02520..849fcde6194 100644 --- a/packages/ra-core/src/sideEffect/accumulate.spec.ts +++ b/packages/ra-core/src/sideEffect/accumulate.spec.ts @@ -1,7 +1,6 @@ import expect from 'expect'; -import { delay } from 'redux-saga'; -import { call, cancel, fork, put } from 'redux-saga/effects'; -import { createMockTask } from 'redux-saga/utils'; +import { call, cancel, delay, fork, put } from 'redux-saga/effects'; +import { createMockTask } from '@redux-saga/testing-utils'; import { accumulateFactory, finalizeFactory } from './accumulate'; import { crudGetMany } from '../actions'; @@ -60,7 +59,7 @@ describe('accumulate saga', () => { crudGetMany ); - expect(saga.next().value).toEqual(call(delay, 50)); + expect(saga.next().value).toEqual(delay(50)); expect(saga.next().value).toEqual( put(crudGetMany('posts', [1, 2])) diff --git a/packages/ra-core/src/sideEffect/accumulate.ts b/packages/ra-core/src/sideEffect/accumulate.ts index a23f1e770aa..6cab73cd173 100644 --- a/packages/ra-core/src/sideEffect/accumulate.ts +++ b/packages/ra-core/src/sideEffect/accumulate.ts @@ -1,5 +1,4 @@ -import { delay } from 'redux-saga'; -import { call, cancel, fork, put, takeEvery } from 'redux-saga/effects'; +import { call, cancel, delay, fork, put, takeEvery } from 'redux-saga/effects'; /** * Distinct reducer on ids @@ -28,7 +27,7 @@ export const finalizeFactory = (tasks, accumulations) => */ function* finalize(key, actionCreator) { // combined with cancel(), this debounces the calls - yield call(delay, 50); + yield delay(50); // Get the latest accumulated value for the provided key const accumulatedValue = accumulations[key]; diff --git a/packages/ra-core/src/sideEffect/undo.spec.ts b/packages/ra-core/src/sideEffect/undo.spec.ts index 94242bc6fa5..8cb90b83f1c 100644 --- a/packages/ra-core/src/sideEffect/undo.spec.ts +++ b/packages/ra-core/src/sideEffect/undo.spec.ts @@ -1,8 +1,10 @@ import expect from 'expect'; -import { put } from 'redux-saga/effects'; +import { put, race, take } from 'redux-saga/effects'; import { showNotification } from '../actions/notificationActions'; import { + UNDO, + COMPLETE, startOptimisticMode, stopOptimisticMode, } from '../actions/undoActions'; @@ -46,7 +48,12 @@ describe('undo saga', () => { ); }); it('should fork the race', () => { - expect(generator.next().value).toHaveProperty('RACE'); + expect(generator.next().value).toEqual( + race({ + undo: take(UNDO), + complete: take(COMPLETE), + }) + ); }); it('should stop the optimistic mode', () => { expect(generator.next({ undo: true }).value).toEqual( @@ -85,7 +92,12 @@ describe('undo saga', () => { ); }); it('should fork the race', () => { - expect(generator.next().value).toHaveProperty('RACE'); + expect(generator.next().value).toEqual( + race({ + undo: take(UNDO), + complete: take(COMPLETE), + }) + ); }); it('should stop the optimistic mode', () => { expect(generator.next({ complete: true }).value).toEqual( diff --git a/packages/ra-realtime/package.json b/packages/ra-realtime/package.json index 788c4f318db..d776492aaba 100644 --- a/packages/ra-realtime/package.json +++ b/packages/ra-realtime/package.json @@ -39,13 +39,13 @@ "ra-core": "^2.5.0", "react-admin": "^2.5.3", "react-router": "^4.2.0", - "redux-saga": "~0.16.0" + "redux-saga": "^1.0.0" }, "devDependencies": { "connected-react-router": "^6.4.0", "cross-env": "^5.2.0", "react-router": "^4.2.0", - "redux-saga": "~0.16.0", + "redux-saga": "^1.0.0", "rimraf": "^2.6.3" } } diff --git a/yarn.lock b/yarn.lock index 8223636e5b2..3543890bee8 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1732,6 +1732,58 @@ resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-1.1.0.tgz#50c1e2260ac0ed9439a181de3725a0168d59c48a" integrity sha512-LAQ1d4OPfSJ/BMbI2DuizmYrrkD9JMaTdi2hQTlI53lQ4kRQPyZQRS4CYQ7O66bnBBnP/oYdRxbk++X0xuFU6A== +"@redux-saga/core@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@redux-saga/core/-/core-1.0.2.tgz#4336a5bb4253e5ca69681c25a863fbbc03ea6d88" + integrity sha512-AsJYcpuYfM1cmxJvfhXs9HAFSZVEG17TMsLPlXH7+Hq5a5ZP4GqcbtijEmS2AC7NR5lLJHy8csxpqz22PeW5dw== + dependencies: + "@babel/runtime" "^7.0.0" + "@redux-saga/deferred" "^1.0.1" + "@redux-saga/delay-p" "^1.0.1" + "@redux-saga/is" "^1.0.2" + "@redux-saga/symbols" "^1.0.1" + "@redux-saga/types" "^1.0.2" + redux ">=0.10 <5" + typescript-tuple "^2.1.0" + +"@redux-saga/deferred@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@redux-saga/deferred/-/deferred-1.0.1.tgz#c895445e486bded90acf0b873b4e978fbfe458c2" + integrity sha512-+gW5xQ93QXOOmRLAmX8x2Hx1HpbTG6CM6+HcdTSbJovh4uMWaGyeDECnqXSt8QqA/ja3s2nqYXLqXFKepIQ1hw== + +"@redux-saga/delay-p@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@redux-saga/delay-p/-/delay-p-1.0.1.tgz#d69fc6103c7509ae80faa144ea17bbc69e51e029" + integrity sha512-0SnNDyDLUyB4NThtptAwiprNOnbCNhoed/Rp5JwS7SB+a/AdWynVgg/E6BmjsggLFNr07KW0bzn05tsPRBuU7Q== + dependencies: + "@redux-saga/symbols" "^1.0.1" + +"@redux-saga/is@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@redux-saga/is/-/is-1.0.2.tgz#7f4be014c97061898d7efb11d6c9de31e943ed38" + integrity sha512-WnaUOwYvPK2waWjzebT4uhL8zY76XNkzzpJ2EQJe8bN1tByvAjvT7MuJZTSshOhdHL5PsRO0MsH224XIXBJidQ== + dependencies: + "@redux-saga/symbols" "^1.0.1" + "@redux-saga/types" "^1.0.2" + +"@redux-saga/symbols@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@redux-saga/symbols/-/symbols-1.0.1.tgz#46512ae1275f88df061c42168d0f600ddb170c1e" + integrity sha512-akKkzcVnb1RzJaZV2LQFbi51abvdICMuAKwwLoCjjxLbLAGIw9EJxk5ucNnWSSCEsoEQMeol5tkAcK+Xzuv1Bg== + +"@redux-saga/testing-utils@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@redux-saga/testing-utils/-/testing-utils-1.0.2.tgz#e1f6dcbae728e45f7c8d7c03cf763b03abb9c32e" + integrity sha512-pywf97heIqtapX/Uk4vVFXnpfars1Yh5xJu3mYffZfyMupziAmNe5DW/2HNZiWFnWLyWI9/3ykTo3+cfEGoNcg== + dependencies: + "@redux-saga/symbols" "^1.0.1" + "@redux-saga/types" "^1.0.2" + +"@redux-saga/types@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@redux-saga/types/-/types-1.0.2.tgz#1d94f02800b094753f9271c206a26c2a06ca14ee" + integrity sha512-8/qcMh15507AnXJ3lBeuhsdFwnWQqnp68EpUuHlYPixJ5vjVmls7/Jq48cnUlrZI8Jd9U1jkhfCl0gaT5KMgVw== + "@sheerun/mutationobserver-shim@^0.3.2": version "0.3.2" resolved "https://registry.yarnpkg.com/@sheerun/mutationobserver-shim/-/mutationobserver-shim-0.3.2.tgz#8013f2af54a2b7d735f71560ff360d3a8176a87b" @@ -14241,10 +14293,20 @@ redux-form@~8.2.0: react-is "^16.7.0" react-lifecycles-compat "^3.0.4" -redux-saga@~0.16.0: - version "0.16.0" - resolved "https://registry.yarnpkg.com/redux-saga/-/redux-saga-0.16.0.tgz#0a231db0a1489301dd980f6f2f88d8ced418f724" - integrity sha1-CiMdsKFIkwHdmA9vL4jYztQY9yQ= +redux-saga@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/redux-saga/-/redux-saga-1.0.2.tgz#0599703f975438f1b2f9d2b9a965ec58f0fdfcd7" + integrity sha512-dHV256by3eF2AnBPx1l3HqazQFkErZ82HDXgh4jSRpT72OrX31wyg8DA1q8+0HvENRfJAyhT/4qT5yH/vVqFfw== + dependencies: + "@redux-saga/core" "^1.0.2" + +"redux@>=0.10 <5", "redux@^3.6.0 || ^4.0.0", "redux@^3.7.2 || ^4.0.0": + version "4.0.1" + resolved "https://registry.yarnpkg.com/redux/-/redux-4.0.1.tgz#436cae6cc40fbe4727689d7c8fae44808f1bfef5" + integrity sha512-R7bAtSkk7nY6O/OYMVR9RiBI+XghjF9rlbl5806HJbQph0LJVHZrU5oaO4q70eUKiqMRqm4y07KLTlMZ2BlVmg== + dependencies: + loose-envify "^1.4.0" + symbol-observable "^1.2.0" redux@^3.4.0: version "3.7.2" @@ -14256,14 +14318,6 @@ redux@^3.4.0: loose-envify "^1.1.0" symbol-observable "^1.0.3" -"redux@^3.6.0 || ^4.0.0", "redux@^3.7.2 || ^4.0.0": - version "4.0.1" - resolved "https://registry.yarnpkg.com/redux/-/redux-4.0.1.tgz#436cae6cc40fbe4727689d7c8fae44808f1bfef5" - integrity sha512-R7bAtSkk7nY6O/OYMVR9RiBI+XghjF9rlbl5806HJbQph0LJVHZrU5oaO4q70eUKiqMRqm4y07KLTlMZ2BlVmg== - dependencies: - loose-envify "^1.4.0" - symbol-observable "^1.2.0" - redux@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/redux/-/redux-4.0.0.tgz#aa698a92b729315d22b34a0553d7e6533555cc03" @@ -16206,6 +16260,25 @@ typedarray@^0.0.6: resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= +typescript-compare@^0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/typescript-compare/-/typescript-compare-0.0.2.tgz#7ee40a400a406c2ea0a7e551efd3309021d5f425" + integrity sha512-8ja4j7pMHkfLJQO2/8tut7ub+J3Lw2S3061eJLFQcvs3tsmJKp8KG5NtpLn7KcY2w08edF74BSVN7qJS0U6oHA== + dependencies: + typescript-logic "^0.0.0" + +typescript-logic@^0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/typescript-logic/-/typescript-logic-0.0.0.tgz#66ebd82a2548f2b444a43667bec120b496890196" + integrity sha512-zXFars5LUkI3zP492ls0VskH3TtdeHCqu0i7/duGt60i5IGPIpAHE/DWo5FqJ6EjQ15YKXrt+AETjv60Dat34Q== + +typescript-tuple@^2.1.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/typescript-tuple/-/typescript-tuple-2.2.1.tgz#7d9813fb4b355f69ac55032e0363e8bb0f04dad2" + integrity sha512-Zcr0lbt8z5ZdEzERHAMAniTiIKerFCMgd7yjq1fPnDJ43et/k9twIFQMUYff9k5oXcsQ0WpvFcgzK2ZKASoW6Q== + dependencies: + typescript-compare "^0.0.2" + typescript@^3.4.5: version "3.4.5" resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.4.5.tgz#2d2618d10bb566572b8d7aad5180d84257d70a99" From 943d4e82ee69e2cd3f29bd9c69e7debca12f2a6e Mon Sep 17 00:00:00 2001 From: Gildas Garcia Date: Sat, 11 May 2019 17:00:59 +0200 Subject: [PATCH 2/3] Fix demo login --- examples/demo/src/layout/Login.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/demo/src/layout/Login.js b/examples/demo/src/layout/Login.js index dbd1075ce5c..31790ce1770 100644 --- a/examples/demo/src/layout/Login.js +++ b/examples/demo/src/layout/Login.js @@ -11,7 +11,7 @@ import CardActions from '@material-ui/core/CardActions'; import CircularProgress from '@material-ui/core/CircularProgress'; import TextField from '@material-ui/core/TextField'; import { createMuiTheme, withStyles } from '@material-ui/core/styles'; -import { ThemeProvider } from '@material-ui/core/styles'; +import { ThemeProvider } from '@material-ui/styles'; import LockIcon from '@material-ui/icons/Lock'; import { Notification, useTranslate, translate, userLogin } from 'react-admin'; From ca524dd1fa54233d3d131049c40115c9cc53b82f Mon Sep 17 00:00:00 2001 From: Gildas Garcia Date: Sat, 11 May 2019 17:01:03 +0200 Subject: [PATCH 3/3] Fix demo warnings --- examples/demo/src/routes.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/examples/demo/src/routes.js b/examples/demo/src/routes.js index 8b073a963d9..e06b63b3d29 100644 --- a/examples/demo/src/routes.js +++ b/examples/demo/src/routes.js @@ -4,6 +4,6 @@ import Configuration from './configuration/Configuration'; import Segments from './segments/Segments'; export default [ - , - , + } />, + } />, ];