'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol ? "symbol" : typeof obj; }; var _keys = require('./keys'); var _keys2 = _interopRequireDefault(_keys); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var is = { obj: function obj(value) { return (typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object' && !!value; }, all: function all(value) { return is.obj(value) && value.type === _keys2.default.all; }, error: function error(value) { return is.obj(value) && value.type === _keys2.default.error; }, array: Array.isArray, func: function func(value) { return typeof value === 'function'; }, promise: function promise(value) { return value && is.func(value.then); }, iterator: function iterator(value) { return value && is.func(value.next) && is.func(value.throw); }, fork: function fork(value) { return is.obj(value) && value.type === _keys2.default.fork; }, join: function join(value) { return is.obj(value) && value.type === _keys2.default.join; }, race: function race(value) { return is.obj(value) && value.type === _keys2.default.race; }, call: function call(value) { return is.obj(value) && value.type === _keys2.default.call; }, cps: function cps(value) { return is.obj(value) && value.type === _keys2.default.cps; }, subscribe: function subscribe(value) { return is.obj(value) && value.type === _keys2.default.subscribe; }, channel: function channel(value) { return is.obj(value) && is.func(value.subscribe); } }; exports.default = is;