1'use strict';
2
3Object.defineProperty(exports, "__esModule", {
4    value: true
5});
6exports.isAsyncIterable = exports.isAsyncGenerator = exports.isAsync = undefined;
7
8var _asyncify = require('../asyncify.js');
9
10var _asyncify2 = _interopRequireDefault(_asyncify);
11
12function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
13
14function isAsync(fn) {
15    return fn[Symbol.toStringTag] === 'AsyncFunction';
16}
17
18function isAsyncGenerator(fn) {
19    return fn[Symbol.toStringTag] === 'AsyncGenerator';
20}
21
22function isAsyncIterable(obj) {
23    return typeof obj[Symbol.asyncIterator] === 'function';
24}
25
26function wrapAsync(asyncFn) {
27    if (typeof asyncFn !== 'function') throw new Error('expected a function');
28    return isAsync(asyncFn) ? (0, _asyncify2.default)(asyncFn) : asyncFn;
29}
30
31exports.default = wrapAsync;
32exports.isAsync = isAsync;
33exports.isAsyncGenerator = isAsyncGenerator;
34exports.isAsyncIterable = isAsyncIterable;