63 lines
1.9 KiB
JavaScript
63 lines
1.9 KiB
JavaScript
|
import { TASK, SAGA_ACTION, MULTICAST, IO } from '@redux-saga/symbols';
|
||
|
|
||
|
var undef = function undef(v) {
|
||
|
return v === null || v === undefined;
|
||
|
};
|
||
|
var notUndef = function notUndef(v) {
|
||
|
return v !== null && v !== undefined;
|
||
|
};
|
||
|
var func = function func(f) {
|
||
|
return typeof f === 'function';
|
||
|
};
|
||
|
var number = function number(n) {
|
||
|
return typeof n === 'number';
|
||
|
};
|
||
|
var string = function string(s) {
|
||
|
return typeof s === 'string';
|
||
|
};
|
||
|
var array = Array.isArray;
|
||
|
var object = function object(obj) {
|
||
|
return obj && !array(obj) && typeof obj === 'object';
|
||
|
};
|
||
|
var promise = function promise(p) {
|
||
|
return p && func(p.then);
|
||
|
};
|
||
|
var iterator = function iterator(it) {
|
||
|
return it && func(it.next) && func(it.throw);
|
||
|
};
|
||
|
var iterable = function iterable(it) {
|
||
|
return it && func(Symbol) ? func(it[Symbol.iterator]) : array(it);
|
||
|
};
|
||
|
var task = function task(t) {
|
||
|
return t && t[TASK];
|
||
|
};
|
||
|
var sagaAction = function sagaAction(a) {
|
||
|
return Boolean(a && a[SAGA_ACTION]);
|
||
|
};
|
||
|
var observable = function observable(ob) {
|
||
|
return ob && func(ob.subscribe);
|
||
|
};
|
||
|
var buffer = function buffer(buf) {
|
||
|
return buf && func(buf.isEmpty) && func(buf.take) && func(buf.put);
|
||
|
};
|
||
|
var pattern = function pattern(pat) {
|
||
|
return pat && (string(pat) || symbol(pat) || func(pat) || array(pat) && pat.every(pattern));
|
||
|
};
|
||
|
var channel = function channel(ch) {
|
||
|
return ch && func(ch.take) && func(ch.close);
|
||
|
};
|
||
|
var stringableFunc = function stringableFunc(f) {
|
||
|
return func(f) && f.hasOwnProperty('toString');
|
||
|
};
|
||
|
var symbol = function symbol(sym) {
|
||
|
return Boolean(sym) && typeof Symbol === 'function' && sym.constructor === Symbol && sym !== Symbol.prototype;
|
||
|
};
|
||
|
var multicast = function multicast(ch) {
|
||
|
return channel(ch) && ch[MULTICAST];
|
||
|
};
|
||
|
var effect = function effect(eff) {
|
||
|
return eff && eff[IO];
|
||
|
};
|
||
|
|
||
|
export { array, buffer, channel, effect, func, iterable, iterator, multicast, notUndef, number, object, observable, pattern, promise, sagaAction, string, stringableFunc, symbol, task, undef };
|