Skip to content

Commit e8a2fdf

Browse files
committed
Marking mainly deprecation warnings as pure which allows for better tree-shaking on them, more can be read here https://iamakulov.com/notes/polished-webpack/
1 parent 6164d82 commit e8a2fdf

File tree

9 files changed

+172
-155
lines changed

9 files changed

+172
-155
lines changed

dist/redux-saga.js

Lines changed: 27 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -718,6 +718,18 @@ function stdChannel(subscribe) {
718718
var done = { done: true, value: undefined };
719719
var qEnd = {};
720720

721+
function safeName(patternOrChannel) {
722+
if (is.channel(patternOrChannel)) {
723+
return 'channel';
724+
} else if (Array.isArray(patternOrChannel)) {
725+
return String(patternOrChannel.map(function (entry) {
726+
return String(entry);
727+
}));
728+
} else {
729+
return String(patternOrChannel);
730+
}
731+
}
732+
721733
function fsmIterator(fsm, q0) {
722734
var name = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'iterator';
723735

@@ -751,19 +763,7 @@ function fsmIterator(fsm, q0) {
751763
}, name, true);
752764
}
753765

754-
function safeName(patternOrChannel) {
755-
if (is.channel(patternOrChannel)) {
756-
return 'channel';
757-
} else if (Array.isArray(patternOrChannel)) {
758-
return String(patternOrChannel.map(function (entry) {
759-
return String(entry);
760-
}));
761-
} else {
762-
return String(patternOrChannel);
763-
}
764-
}
765-
766-
function takeEveryHelper(patternOrChannel, worker) {
766+
function takeEvery$2(patternOrChannel, worker) {
767767
for (var _len = arguments.length, args = Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {
768768
args[_key - 2] = arguments[_key];
769769
}
@@ -788,9 +788,9 @@ function takeEveryHelper(patternOrChannel, worker) {
788788
}, 'q1', 'takeEvery(' + safeName(patternOrChannel) + ', ' + worker.name + ')');
789789
}
790790

791-
function takeLatestHelper(patternOrChannel, worker) {
792-
for (var _len2 = arguments.length, args = Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) {
793-
args[_key2 - 2] = arguments[_key2];
791+
function takeLatest$2(patternOrChannel, worker) {
792+
for (var _len = arguments.length, args = Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {
793+
args[_key - 2] = arguments[_key];
794794
}
795795

796796
var yTake = { done: false, value: take(patternOrChannel) };
@@ -823,9 +823,9 @@ function takeLatestHelper(patternOrChannel, worker) {
823823
}, 'q1', 'takeLatest(' + safeName(patternOrChannel) + ', ' + worker.name + ')');
824824
}
825825

826-
function throttleHelper(delayLength, pattern, worker) {
827-
for (var _len3 = arguments.length, args = Array(_len3 > 3 ? _len3 - 3 : 0), _key3 = 3; _key3 < _len3; _key3++) {
828-
args[_key3 - 3] = arguments[_key3];
826+
function throttle$2(delayLength, pattern, worker) {
827+
for (var _len = arguments.length, args = Array(_len > 3 ? _len - 3 : 0), _key = 3; _key < _len; _key++) {
828+
args[_key - 3] = arguments[_key];
829829
}
830830

831831
var action = void 0,
@@ -866,9 +866,10 @@ function throttleHelper(delayLength, pattern, worker) {
866866
var deprecationWarning = function deprecationWarning(helperName) {
867867
return 'import { ' + helperName + ' } from \'redux-saga\' has been deprecated in favor of import { ' + helperName + ' } from \'redux-saga/effects\'.\nThe latter will not work with yield*, as helper effects are wrapped automatically for you in fork effect.\nTherefore yield ' + helperName + ' will return task descriptor to your saga and execute next lines of code.';
868868
};
869-
var takeEvery$1 = deprecate(takeEveryHelper, deprecationWarning('takeEvery'));
870-
var takeLatest$1 = deprecate(takeLatestHelper, deprecationWarning('takeLatest'));
871-
var throttle$1 = deprecate(throttleHelper, deprecationWarning('throttle'));
869+
870+
var takeEvery$1 = /*#__PURE__*/deprecate(takeEvery$2, /*#__PURE__*/deprecationWarning('takeEvery'));
871+
var takeLatest$1 = /*#__PURE__*/deprecate(takeLatest$2, /*#__PURE__*/deprecationWarning('takeLatest'));
872+
var throttle$1 = /*#__PURE__*/deprecate(throttle$2, /*#__PURE__*/deprecationWarning('throttle'));
872873

873874
var IO = sym('IO');
874875
var TAKE = 'TAKE';
@@ -916,7 +917,7 @@ take.maybe = function () {
916917
return eff;
917918
};
918919

919-
var takem = deprecate(take.maybe, updateIncentive('takem', 'take.maybe'));
920+
var takem = /*#__PURE__*/deprecate(take.maybe, /*#__PURE__*/updateIncentive('takem', 'take.maybe'));
920921

921922
function put(channel, action) {
922923
if (arguments.length > 1) {
@@ -1092,23 +1093,23 @@ function takeEvery$$1(patternOrChannel, worker) {
10921093
args[_key8 - 2] = arguments[_key8];
10931094
}
10941095

1095-
return fork.apply(undefined, [takeEveryHelper, patternOrChannel, worker].concat(args));
1096+
return fork.apply(undefined, [takeEvery$2, patternOrChannel, worker].concat(args));
10961097
}
10971098

10981099
function takeLatest$$1(patternOrChannel, worker) {
10991100
for (var _len9 = arguments.length, args = Array(_len9 > 2 ? _len9 - 2 : 0), _key9 = 2; _key9 < _len9; _key9++) {
11001101
args[_key9 - 2] = arguments[_key9];
11011102
}
11021103

1103-
return fork.apply(undefined, [takeLatestHelper, patternOrChannel, worker].concat(args));
1104+
return fork.apply(undefined, [takeLatest$2, patternOrChannel, worker].concat(args));
11041105
}
11051106

11061107
function throttle$$1(ms, pattern, worker) {
11071108
for (var _len10 = arguments.length, args = Array(_len10 > 3 ? _len10 - 3 : 0), _key10 = 3; _key10 < _len10; _key10++) {
11081109
args[_key10 - 3] = arguments[_key10];
11091110
}
11101111

1111-
return fork.apply(undefined, [throttleHelper, ms, pattern, worker].concat(args));
1112+
return fork.apply(undefined, [throttle$2, ms, pattern, worker].concat(args));
11121113
}
11131114

11141115
var createAsEffectType = function createAsEffectType(type) {

dist/redux-saga.min.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/internal/io.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ take.maybe = (...args) => {
4444
return eff
4545
}
4646

47-
export const takem = deprecate(take.maybe, updateIncentive('takem', 'take.maybe'))
47+
export const takem = /*#__PURE__*/ deprecate(take.maybe, /*#__PURE__*/ updateIncentive('takem', 'take.maybe'))
4848

4949
export function put(channel, action) {
5050
if (arguments.length > 1) {

src/internal/sagaHelpers.js

Lines changed: 0 additions & 127 deletions
This file was deleted.
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
import { is, makeIterator } from '../utils'
2+
3+
const done = { done: true, value: undefined }
4+
export const qEnd = {}
5+
6+
export function safeName(patternOrChannel) {
7+
if (is.channel(patternOrChannel)) {
8+
return 'channel'
9+
} else if (Array.isArray(patternOrChannel)) {
10+
return String(patternOrChannel.map(entry => String(entry)))
11+
} else {
12+
return String(patternOrChannel)
13+
}
14+
}
15+
16+
export default function fsmIterator(fsm, q0, name = 'iterator') {
17+
let updateState,
18+
qNext = q0
19+
20+
function next(arg, error) {
21+
if (qNext === qEnd) {
22+
return done
23+
}
24+
25+
if (error) {
26+
qNext = qEnd
27+
throw error
28+
} else {
29+
updateState && updateState(arg)
30+
let [q, output, _updateState] = fsm[qNext]()
31+
qNext = q
32+
updateState = _updateState
33+
return qNext === qEnd ? done : output
34+
}
35+
}
36+
37+
return makeIterator(next, error => next(null, error), name, true)
38+
}

src/internal/sagaHelpers/index.js

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
import takeEveryHelper from './takeEvery'
2+
import takeLatestHelper from './takeLatest'
3+
import throttleHelper from './throttle'
4+
5+
import { deprecate } from '../utils'
6+
7+
const deprecationWarning = helperName =>
8+
`import { ${helperName} } from 'redux-saga' has been deprecated in favor of import { ${helperName} } from 'redux-saga/effects'.
9+
The latter will not work with yield*, as helper effects are wrapped automatically for you in fork effect.
10+
Therefore yield ${helperName} will return task descriptor to your saga and execute next lines of code.`
11+
12+
const takeEvery = /*#__PURE__*/ deprecate(takeEveryHelper, /*#__PURE__*/ deprecationWarning('takeEvery'))
13+
const takeLatest = /*#__PURE__*/ deprecate(takeLatestHelper, /*#__PURE__*/ deprecationWarning('takeLatest'))
14+
const throttle = /*#__PURE__*/ deprecate(throttleHelper, /*#__PURE__*/ deprecationWarning('throttle'))
15+
16+
export { takeEvery, takeLatest, throttle, takeEveryHelper, takeLatestHelper, throttleHelper }
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
import fsmIterator, { qEnd, safeName } from './fsmIterator'
2+
import { take, fork } from '../io'
3+
import { END } from '../channel'
4+
5+
export default function takeEvery(patternOrChannel, worker, ...args) {
6+
const yTake = { done: false, value: take(patternOrChannel) }
7+
const yFork = ac => ({ done: false, value: fork(worker, ...args, ac) })
8+
9+
let action,
10+
setAction = ac => (action = ac)
11+
12+
return fsmIterator(
13+
{
14+
q1() {
15+
return ['q2', yTake, setAction]
16+
},
17+
q2() {
18+
return action === END ? [qEnd] : ['q1', yFork(action)]
19+
},
20+
},
21+
'q1',
22+
`takeEvery(${safeName(patternOrChannel)}, ${worker.name})`,
23+
)
24+
}
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
import fsmIterator, { qEnd, safeName } from './fsmIterator'
2+
import { cancel, take, fork } from '../io'
3+
import { END } from '../channel'
4+
5+
export default function takeLatest(patternOrChannel, worker, ...args) {
6+
const yTake = { done: false, value: take(patternOrChannel) }
7+
const yFork = ac => ({ done: false, value: fork(worker, ...args, ac) })
8+
const yCancel = task => ({ done: false, value: cancel(task) })
9+
10+
let task, action
11+
const setTask = t => (task = t)
12+
const setAction = ac => (action = ac)
13+
14+
return fsmIterator(
15+
{
16+
q1() {
17+
return ['q2', yTake, setAction]
18+
},
19+
q2() {
20+
return action === END ? [qEnd] : task ? ['q3', yCancel(task)] : ['q1', yFork(action), setTask]
21+
},
22+
q3() {
23+
return ['q1', yFork(action), setTask]
24+
},
25+
},
26+
'q1',
27+
`takeLatest(${safeName(patternOrChannel)}, ${worker.name})`,
28+
)
29+
}

0 commit comments

Comments
 (0)