UNPKG

typed-patterns

Version:
93 lines 6.32 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); /** * Returns global or window. Depends on environment */ function getGlobal() { if (typeof global === 'object') { return global; // @ts-ignore } else if (typeof window === 'object') { // @ts-ignore return window; } else { throw new Error('Can not deal with this environment. Go fuck yourself'); } } /** * Returns a function that can set up your operator as soon as possible in your environment */ function getNextTick() { const glob = getGlobal(); if (glob.process && typeof glob.process.nextTick === 'function') { return glob.process.nextTick; } else if (typeof glob.setImmediate === 'function') { return glob.setImmediate; } else if (typeof glob.Promise === 'function') { // tslint:disable-next-line:no-shadowed-variable return function nextTick(operator) { const args = Array.prototype.slice.call(arguments, 1); return Promise.resolve() .then(() => { operator.apply(null, args); }) .catch(() => undefined); }; } else if (typeof glob.MutationObserver === 'function') { const element = glob.document.createElement('a'); const createQueue = () => { return new Array(16); }; let queue = createQueue(); let fire = false; let callCounter = 0; let fireCounter = 0; const observer = new glob.MutationObserver(function () { const len = callCounter; const track = queue; callCounter = 0; fire = false; queue = createQueue(); for (let i = 0; i < len; ++i) { try { track[i](); } catch (e) { } } }); observer.observe(element, { attributes: true, attributeFilter: ['lang'] }); // tslint:disable-next-line:no-shadowed-variable return function nextTick(operator, ...args) { queue[callCounter++] = operator.bind(null, ...args); if (!fire) { fire = true; element.setAttribute('lang', (fireCounter++).toString()); } }; } else { return function (operator) { const args = Array.prototype.slice.call(arguments, 1); setTimeout(() => { operator.apply(null, args); }, 1); }; } } function nextTick(operator, ...args) { if (typeof operator !== 'function') { throw new TypeError('Function expected'); } _nextTick(operator, ...args); } exports.nextTick = nextTick; const _nextTick = getNextTick(); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV4dC50aWNrLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc291cmNlL3V0aWwvbmV4dC50aWNrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBRUE7O0dBRUc7QUFDSCxTQUFTLFNBQVM7SUFDaEIsSUFBSSxPQUFPLE1BQU0sS0FBSyxRQUFRLEVBQUU7UUFDOUIsT0FBTyxNQUFNLENBQUM7UUFDZCxhQUFhO0tBQ2Q7U0FBTSxJQUFJLE9BQU8sTUFBTSxLQUFLLFFBQVEsRUFBRTtRQUNyQyxhQUFhO1FBQ2IsT0FBTyxNQUFNLENBQUM7S0FDZjtTQUFNO1FBQ0wsTUFBTSxJQUFJLEtBQUssQ0FBQyxzREFBc0QsQ0FBQyxDQUFDO0tBQ3pFO0FBQ0gsQ0FBQztBQUVEOztHQUVHO0FBQ0gsU0FBUyxXQUFXO0lBQ2xCLE1BQU0sSUFBSSxHQUFHLFNBQVMsRUFBRSxDQUFDO0lBQ3pCLElBQUksSUFBSSxDQUFDLE9BQU8sSUFBSSxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxLQUFLLFVBQVUsRUFBRTtRQUMvRCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDO0tBQzlCO1NBQU0sSUFBSSxPQUFPLElBQUksQ0FBQyxZQUFZLEtBQUssVUFBVSxFQUFFO1FBQ2xELE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztLQUMxQjtTQUFNLElBQUksT0FBTyxJQUFJLENBQUMsT0FBTyxLQUFLLFVBQVUsRUFBRTtRQUM3QyxnREFBZ0Q7UUFDaEQsT0FBTyxTQUFTLFFBQVEsQ0FBQyxRQUFrQjtZQUN6QyxNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ3RELE9BQU8sT0FBTyxDQUFDLE9BQU8sRUFBRTtpQkFDckIsSUFBSSxDQUFDLEdBQUcsRUFBRTtnQkFDVCxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMs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