massive update, probably broken
[dotfiles/.git] / .config / coc / extensions / node_modules / coc-prettier / node_modules / core-js / internals / async-iterator-prototype.js
1 var global = require('../internals/global');
2 var shared = require('../internals/shared-store');
3 var isCallable = require('../internals/is-callable');
4 var create = require('../internals/object-create');
5 var getPrototypeOf = require('../internals/object-get-prototype-of');
6 var redefine = require('../internals/redefine');
7 var wellKnownSymbol = require('../internals/well-known-symbol');
8 var IS_PURE = require('../internals/is-pure');
9
10 var USE_FUNCTION_CONSTRUCTOR = 'USE_FUNCTION_CONSTRUCTOR';
11 var ASYNC_ITERATOR = wellKnownSymbol('asyncIterator');
12 var AsyncIterator = global.AsyncIterator;
13 var PassedAsyncIteratorPrototype = shared.AsyncIteratorPrototype;
14 var AsyncIteratorPrototype, prototype;
15
16 if (PassedAsyncIteratorPrototype) {
17   AsyncIteratorPrototype = PassedAsyncIteratorPrototype;
18 } else if (isCallable(AsyncIterator)) {
19   AsyncIteratorPrototype = AsyncIterator.prototype;
20 } else if (shared[USE_FUNCTION_CONSTRUCTOR] || global[USE_FUNCTION_CONSTRUCTOR]) {
21   try {
22     // eslint-disable-next-line no-new-func -- we have no alternatives without usage of modern syntax
23     prototype = getPrototypeOf(getPrototypeOf(getPrototypeOf(Function('return async function*(){}()')())));
24     if (getPrototypeOf(prototype) === Object.prototype) AsyncIteratorPrototype = prototype;
25   } catch (error) { /* empty */ }
26 }
27
28 if (!AsyncIteratorPrototype) AsyncIteratorPrototype = {};
29 else if (IS_PURE) AsyncIteratorPrototype = create(AsyncIteratorPrototype);
30
31 if (!isCallable(AsyncIteratorPrototype[ASYNC_ITERATOR])) {
32   redefine(AsyncIteratorPrototype, ASYNC_ITERATOR, function () {
33     return this;
34   });
35 }
36
37 module.exports = AsyncIteratorPrototype;