@reactivex/rxjs
Version:
Reactive Extensions for modern JavaScript
30 lines (27 loc) • 863 B
text/typescript
import {root} from '../util/root';
export let $$iterator: any;
const Symbol: any = root.Symbol;
if (typeof Symbol === 'function') {
if (Symbol.iterator) {
$$iterator = Symbol.iterator;
} else if (typeof Symbol.for === 'function') {
$$iterator = Symbol.for('iterator');
}
} else {
if (root.Set && typeof new root.Set()['@@iterator'] === 'function') {
// Bug for mozilla version
$$iterator = '@@iterator';
} else if (root.Map) {
// es6-shim specific logic
let keys = Object.getOwnPropertyNames(root.Map.prototype);
for (let i = 0; i < keys.length; ++i) {
let key = keys[i];
if (key !== 'entries' && key !== 'size' && root.Map.prototype[key] === root.Map.prototype['entries']) {
$$iterator = key;
break;
}
}
} else {
$$iterator = '@@iterator';
}
}