Skip to content
This repository was archived by the owner on Oct 9, 2020. It is now read-only.

Commit 269dbfb

Browse files
committed
bump babel
1 parent fe79b69 commit 269dbfb

12 files changed

Lines changed: 5122 additions & 4024 deletions

File tree

babel-helpers.js

Lines changed: 183 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
babelHelpers.typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) {
44
return typeof obj;
55
} : function (obj) {
6-
return obj && typeof Symbol === "function" && obj.constructor === Symbol ? "symbol" : typeof obj;
6+
return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
77
};
88

99
babelHelpers.jsx = function () {
@@ -49,6 +49,186 @@
4949
};
5050
}();
5151

52+
babelHelpers.asyncIterator = function (iterable) {
53+
if (typeof Symbol === "function") {
54+
if (Symbol.asyncIterator) {
55+
var method = iterable[Symbol.asyncIterator];
56+
if (method != null) return method.call(iterable);
57+
}
58+
59+
if (Symbol.iterator) {
60+
return iterable[Symbol.iterator]();
61+
}
62+
}
63+
64+
throw new TypeError("Object is not async iterable");
65+
};
66+
67+
babelHelpers.asyncGenerator = function () {
68+
function AwaitValue(value) {
69+
this.value = value;
70+
}
71+
72+
function AsyncGenerator(gen) {
73+
var front, back;
74+
75+
function send(key, arg) {
76+
return new Promise(function (resolve, reject) {
77+
var request = {
78+
key: key,
79+
arg: arg,
80+
resolve: resolve,
81+
reject: reject,
82+
next: null
83+
};
84+
85+
if (back) {
86+
back = back.next = request;
87+
} else {
88+
front = back = request;
89+
resume(key, arg);
90+
}
91+
});
92+
}
93+
94+
function resume(key, arg) {
95+
try {
96+
var result = gen[key](arg);
97+
var value = result.value;
98+
99+
if (value instanceof AwaitValue) {
100+
Promise.resolve(value.value).then(function (arg) {
101+
resume("next", arg);
102+
}, function (arg) {
103+
resume("throw", arg);
104+
});
105+
} else {
106+
settle(result.done ? "return" : "normal", result.value);
107+
}
108+
} catch (err) {
109+
settle("throw", err);
110+
}
111+
}
112+
113+
function settle(type, value) {
114+
switch (type) {
115+
case "return":
116+
front.resolve({
117+
value: value,
118+
done: true
119+
});
120+
break;
121+
122+
case "throw":
123+
front.reject(value);
124+
break;
125+
126+
default:
127+
front.resolve({
128+
value: value,
129+
done: false
130+
});
131+
break;
132+
}
133+
134+
front = front.next;
135+
136+
if (front) {
137+
resume(front.key, front.arg);
138+
} else {
139+
back = null;
140+
}
141+
}
142+
143+
this._invoke = send;
144+
145+
if (typeof gen.return !== "function") {
146+
this.return = undefined;
147+
}
148+
}
149+
150+
if (typeof Symbol === "function" && Symbol.asyncIterator) {
151+
AsyncGenerator.prototype[Symbol.asyncIterator] = function () {
152+
return this;
153+
};
154+
}
155+
156+
AsyncGenerator.prototype.next = function (arg) {
157+
return this._invoke("next", arg);
158+
};
159+
160+
AsyncGenerator.prototype.throw = function (arg) {
161+
return this._invoke("throw", arg);
162+
};
163+
164+
AsyncGenerator.prototype.return = function (arg) {
165+
return this._invoke("return", arg);
166+
};
167+
168+
return {
169+
wrap: function (fn) {
170+
return function () {
171+
return new AsyncGenerator(fn.apply(this, arguments));
172+
};
173+
},
174+
await: function (value) {
175+
return new AwaitValue(value);
176+
}
177+
};
178+
}();
179+
180+
babelHelpers.asyncGeneratorDelegate = function (inner, awaitWrap) {
181+
var iter = {},
182+
waiting = false;
183+
184+
function pump(key, value) {
185+
waiting = true;
186+
value = new Promise(function (resolve) {
187+
resolve(inner[key](value));
188+
});
189+
return {
190+
done: false,
191+
value: awaitWrap(value)
192+
};
193+
}
194+
195+
;
196+
197+
if (typeof Symbol === "function" && Symbol.iterator) {
198+
iter[Symbol.iterator] = function () {
199+
return this;
200+
};
201+
}
202+
203+
iter.next = function (value) {
204+
if (waiting) {
205+
waiting = false;
206+
return value;
207+
}
208+
209+
return pump("next", value);
210+
};
211+
212+
if (typeof inner.throw === "function") {
213+
iter.throw = function (value) {
214+
if (waiting) {
215+
waiting = false;
216+
throw value;
217+
}
218+
219+
return pump("throw", value);
220+
};
221+
}
222+
223+
if (typeof inner.return === "function") {
224+
iter.return = function (value) {
225+
return pump("return", value);
226+
};
227+
}
228+
229+
return iter;
230+
};
231+
52232
babelHelpers.asyncToGenerator = function (fn) {
53233
return function () {
54234
var gen = fn.apply(this, arguments);
@@ -66,9 +246,9 @@
66246
resolve(value);
67247
} else {
68248
return Promise.resolve(value).then(function (value) {
69-
return step("next", value);
249+
step("next", value);
70250
}, function (err) {
71-
return step("throw", err);
251+
step("throw", err);
72252
});
73253
}
74254
}

babel-helpers/asyncGenerator.js

Lines changed: 112 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,112 @@
1+
export default (function () {
2+
function AwaitValue(value) {
3+
this.value = value;
4+
}
5+
6+
function AsyncGenerator(gen) {
7+
var front, back;
8+
9+
function send(key, arg) {
10+
return new Promise(function (resolve, reject) {
11+
var request = {
12+
key: key,
13+
arg: arg,
14+
resolve: resolve,
15+
reject: reject,
16+
next: null
17+
};
18+
19+
if (back) {
20+
back = back.next = request;
21+
} else {
22+
front = back = request;
23+
resume(key, arg);
24+
}
25+
});
26+
}
27+
28+
function resume(key, arg) {
29+
try {
30+
var result = gen[key](arg);
31+
var value = result.value;
32+
33+
if (value instanceof AwaitValue) {
34+
Promise.resolve(value.value).then(function (arg) {
35+
resume("next", arg);
36+
}, function (arg) {
37+
resume("throw", arg);
38+
});
39+
} else {
40+
settle(result.done ? "return" : "normal", result.value);
41+
}
42+
} catch (err) {
43+
settle("throw", err);
44+
}
45+
}
46+
47+
function settle(type, value) {
48+
switch (type) {
49+
case "return":
50+
front.resolve({
51+
value: value,
52+
done: true
53+
});
54+
break;
55+
56+
case "throw":
57+
front.reject(value);
58+
break;
59+
60+
default:
61+
front.resolve({
62+
value: value,
63+
done: false
64+
});
65+
break;
66+
}
67+
68+
front = front.next;
69+
70+
if (front) {
71+
resume(front.key, front.arg);
72+
} else {
73+
back = null;
74+
}
75+
}
76+
77+
this._invoke = send;
78+
79+
if (typeof gen.return !== "function") {
80+
this.return = undefined;
81+
}
82+
}
83+
84+
if (typeof Symbol === "function" && Symbol.asyncIterator) {
85+
AsyncGenerator.prototype[Symbol.asyncIterator] = function () {
86+
return this;
87+
};
88+
}
89+
90+
AsyncGenerator.prototype.next = function (arg) {
91+
return this._invoke("next", arg);
92+
};
93+
94+
AsyncGenerator.prototype.throw = function (arg) {
95+
return this._invoke("throw", arg);
96+
};
97+
98+
AsyncGenerator.prototype.return = function (arg) {
99+
return this._invoke("return", arg);
100+
};
101+
102+
return {
103+
wrap: function (fn) {
104+
return function () {
105+
return new AsyncGenerator(fn.apply(this, arguments));
106+
};
107+
},
108+
await: function (value) {
109+
return new AwaitValue(value);
110+
}
111+
};
112+
})();
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
export default (function (inner, awaitWrap) {
2+
var iter = {},
3+
waiting = false;
4+
5+
function pump(key, value) {
6+
waiting = true;
7+
value = new Promise(function (resolve) {
8+
resolve(inner[key](value));
9+
});
10+
return {
11+
done: false,
12+
value: awaitWrap(value)
13+
};
14+
}
15+
16+
;
17+
18+
if (typeof Symbol === "function" && Symbol.iterator) {
19+
iter[Symbol.iterator] = function () {
20+
return this;
21+
};
22+
}
23+
24+
iter.next = function (value) {
25+
if (waiting) {
26+
waiting = false;
27+
return value;
28+
}
29+
30+
return pump("next", value);
31+
};
32+
33+
if (typeof inner.throw === "function") {
34+
iter.throw = function (value) {
35+
if (waiting) {
36+
waiting = false;
37+
throw value;
38+
}
39+
40+
return pump("throw", value);
41+
};
42+
}
43+
44+
if (typeof inner.return === "function") {
45+
iter.return = function (value) {
46+
return pump("return", value);
47+
};
48+
}
49+
50+
return iter;
51+
});

babel-helpers/asyncIterator.js

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
export default (function (iterable) {
2+
if (typeof Symbol === "function") {
3+
if (Symbol.asyncIterator) {
4+
var method = iterable[Symbol.asyncIterator];
5+
if (method != null) return method.call(iterable);
6+
}
7+
8+
if (Symbol.iterator) {
9+
return iterable[Symbol.iterator]();
10+
}
11+
}
12+
13+
throw new TypeError("Object is not async iterable");
14+
});

0 commit comments

Comments
 (0)