Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
jajbshjahavahh
GitHub Repository: jajbshjahavahh/Gojo-Satoru
Path: blob/master/node_modules/@babel/runtime/helpers/AsyncGenerator.js
2593 views
1
var AwaitValue = require("./AwaitValue.js");
2
3
function AsyncGenerator(gen) {
4
var front, back;
5
6
function send(key, arg) {
7
return new Promise(function (resolve, reject) {
8
var request = {
9
key: key,
10
arg: arg,
11
resolve: resolve,
12
reject: reject,
13
next: null
14
};
15
16
if (back) {
17
back = back.next = request;
18
} else {
19
front = back = request;
20
resume(key, arg);
21
}
22
});
23
}
24
25
function resume(key, arg) {
26
try {
27
var result = gen[key](arg);
28
var value = result.value;
29
var wrappedAwait = value instanceof AwaitValue;
30
Promise.resolve(wrappedAwait ? value.wrapped : value).then(function (arg) {
31
if (wrappedAwait) {
32
resume(key === "return" ? "return" : "next", arg);
33
return;
34
}
35
36
settle(result.done ? "return" : "normal", arg);
37
}, function (err) {
38
resume("throw", err);
39
});
40
} catch (err) {
41
settle("throw", err);
42
}
43
}
44
45
function settle(type, value) {
46
switch (type) {
47
case "return":
48
front.resolve({
49
value: value,
50
done: true
51
});
52
break;
53
54
case "throw":
55
front.reject(value);
56
break;
57
58
default:
59
front.resolve({
60
value: value,
61
done: false
62
});
63
break;
64
}
65
66
front = front.next;
67
68
if (front) {
69
resume(front.key, front.arg);
70
} else {
71
back = null;
72
}
73
}
74
75
this._invoke = send;
76
77
if (typeof gen["return"] !== "function") {
78
this["return"] = undefined;
79
}
80
}
81
82
AsyncGenerator.prototype[typeof Symbol === "function" && Symbol.asyncIterator || "@@asyncIterator"] = function () {
83
return this;
84
};
85
86
AsyncGenerator.prototype.next = function (arg) {
87
return this._invoke("next", arg);
88
};
89
90
AsyncGenerator.prototype["throw"] = function (arg) {
91
return this._invoke("throw", arg);
92
};
93
94
AsyncGenerator.prototype["return"] = function (arg) {
95
return this._invoke("return", arg);
96
};
97
98
module.exports = AsyncGenerator, module.exports.__esModule = true, module.exports["default"] = module.exports;
99