{"version":3,"names":["loader","define","requireModule","require","requirejs","global","dict","obj","Object","create","undefined","oldGlobals","id","pending","mod","findModule","i","length","exports","module","noConflict","aliases","oldName","newName","hasOwnProperty","makeDefaultExport","registry","uuid","defaultDeps","Module","deps","callback","alias","this","hasExportsAsDep","isAlias","reified","Array","state","noop","Alias","referrer","Error","missingModule","findDeps","push","resolve","child","charAt","parts","split","parentBase","slice","l","part","pop","join","has","prototype","isExtensible","wrapModules","reify","result","apply","unsee","_reify","dep","entry","makeRequire","r","moduleId","arguments","unsupportedModule","isArray","name","defaultExport","target","entries","_eak_seen","clear","const","SET_TIMEOUT","setTimeout","NOOP","buildNext","flush","Promise","autorunPromise","then","MutationObserver","let","iterations","observer","node","document","createTextNode","observe","characterData","data","buildPlatform","clearNext","fn","ms","clearTimeout","timerId","now","Date","next","NUMBER","isCoercableNumber","suspect","type","test","getOnError","options","onError","onErrorTarget","onErrorMethod","findItem","method","collection","index","findTimerItem","getQueueItems","items","queueItemLength","queueItemPositionOffset","queueItems","maybeError","queueItem","args","stack","binarySearch","time","timers","middle","start","end","Queue","globalOptions","_queueBeingFlushed","targetQueues","Map","_queue","stackFor","consoleTaskFor","inQueueBeingFlushed","q","sync","errorRecordedForStack","consoleTask","invoke","before","ref","after","invokeWithOnError","run","bind","mustYield","hasWork","cancel","queue","targetQueueMap","get","delete","pushUnique","localQueueMap","set","queueIndex","_getDebugInfo","debugEnabled","call","error","DeferredActionQueues","queueNames","queues","queueNameIndex","reduce","queueName","iterator","done","value","schedule","onceFlag","fromAutorun","numberOfQueues","debugInfo","DISABLE_SCHEDULE","freeze","parseArgs","argsIndex","methodOrTarget","methodOrArgs","len","parseTimerArgs","wait","parseInt","parseDebounceArgs","isImmediate","assign","UUID","beginCount","endCount","beginEventCount","runCount","joinCount","deferCount","scheduleCount","scheduleIterableCount","deferOnceCount","scheduleOnceCount","setTimeoutCount","laterCount","throttleCount","debounceCount","cancelTimersCount","cancelCount","autorunsCreatedCount","autorunsCompletedCount","deferredActionQueuesCreatedCount","nestedDeferredActionQueuesCreated","Backburner","DEBUG","ASYNC_STACKS","currentInstance","instanceStack","_eventCallbacks","begin","_timerTimeoutId","_timers","_autorun","_autorunStack","defaultQueue","_defaultQueue","_onBegin","onBegin","_onEnd","onEnd","_boundRunExpiredTimers","_runExpiredTimers","_boundAutorunEnd","_end","builder","_buildPlatform","_platform","prototypeAccessors","counters","events","autoruns","created","completed","defer","scheduleIterable","deferOnce","scheduleOnce","later","throttle","debounce","cancelTimers","loops","total","nested","current","previousInstance","_cancelAutorun","_trigger","on","eventName","TypeError","callbacks","off","callbackFound","splice","_run","_join","concat","_args","createTask","_ensureInstance","iterable","iteratorDrain","_later","argIndex","executeAt","searchTimer","_reinstallTimerTimeout","_clearTimerTimeout","hasTimers","timer","timerType","_cancelLaterTimer","ensureInstance","getDebugInfo","autorun","map","deferredActionQueue","nextInstance","finallyAlreadyCalled","plannedNextQueue","_scheduleAutorun","_installTimerTimeout","arg1","arg2","_scheduleExpiredTimers","n","minExpiresAt","Math","max","console","default","e","I18n","deprecated","t","decorators","since","dropFrom"],"sources":["../rewritten-packages/@embroider/synthesized-vendor/vendor/loader/loader.js","../lib/backburner/platform.ts","../lib/backburner/utils.ts","../lib/backburner/binary-search.ts","../lib/backburner/queue.ts","../lib/backburner/deferred-action-queues.ts","../lib/backburner/iterator-drain.ts","../lib/index.ts","../rewritten-packages/@embroider/synthesized-vendor/vendor/ember-cli-deprecation-workflow/main.js","../../../public/assets/scripts/module-shims.js"],"sourcesContent":["var loader, define, requireModule, require, requirejs;\n\n(function (global) {\n 'use strict';\n\n function dict() {\n var obj = Object.create(null);\n obj['__'] = undefined;\n delete obj['__'];\n return obj;\n }\n\n // Save off the original values of these globals, so we can restore them if someone asks us to\n var oldGlobals = {\n loader: loader,\n define: define,\n requireModule: requireModule,\n require: require,\n requirejs: requirejs\n };\n\n requirejs = require = requireModule = function (id) {\n var pending = [];\n var mod = findModule(id, '(require)', pending);\n\n for (var i = pending.length - 1; i >= 0; i--) {\n pending[i].exports();\n }\n\n return mod.module.exports;\n };\n\n loader = {\n noConflict: function (aliases) {\n var oldName, newName;\n\n for (oldName in aliases) {\n if (aliases.hasOwnProperty(oldName)) {\n if (oldGlobals.hasOwnProperty(oldName)) {\n newName = aliases[oldName];\n\n global[newName] = global[oldName];\n global[oldName] = oldGlobals[oldName];\n }\n }\n }\n },\n // Option to enable or disable the generation of default exports\n makeDefaultExport: true\n };\n\n var registry = dict();\n var seen = dict();\n\n var uuid = 0;\n\n function unsupportedModule(length) {\n throw new Error('an unsupported module was defined, expected `define(id, deps, module)` instead got: `' + length + '` arguments to define`');\n }\n\n var defaultDeps = ['require', 'exports', 'module'];\n\n function Module(id, deps, callback, alias) {\n this.uuid = uuid++;\n this.id = id;\n this.deps = !deps.length && callback.length ? defaultDeps : deps;\n this.module = { exports: {} };\n this.callback = callback;\n this.hasExportsAsDep = false;\n this.isAlias = alias;\n this.reified = new Array(deps.length);\n\n /*\n Each module normally passes through these states, in order:\n new : initial state\n pending : this module is scheduled to be executed\n reifying : this module's dependencies are being executed\n reified : this module's dependencies finished executing successfully\n errored : this module's dependencies failed to execute\n finalized : this module executed successfully\n */\n this.state = 'new';\n }\n\n Module.prototype.makeDefaultExport = function () {\n var exports = this.module.exports;\n if (exports !== null && (typeof exports === 'object' || typeof exports === 'function') && exports['default'] === undefined && Object.isExtensible(exports)) {\n exports['default'] = exports;\n }\n };\n\n Module.prototype.exports = function () {\n // if finalized, there is no work to do. If reifying, there is a\n // circular dependency so we must return our (partial) exports.\n if (this.state === 'finalized' || this.state === 'reifying') {\n return this.module.exports;\n }\n\n\n if (loader.wrapModules) {\n this.callback = loader.wrapModules(this.id, this.callback);\n }\n\n this.reify();\n\n var result = this.callback.apply(this, this.reified);\n this.reified.length = 0;\n this.state = 'finalized';\n\n if (!(this.hasExportsAsDep && result === undefined)) {\n this.module.exports = result;\n }\n if (loader.makeDefaultExport) {\n this.makeDefaultExport();\n }\n return this.module.exports;\n };\n\n Module.prototype.unsee = function () {\n this.state = 'new';\n this.module = { exports: {} };\n };\n\n Module.prototype.reify = function () {\n if (this.state === 'reified') {\n return;\n }\n this.state = 'reifying';\n try {\n this.reified = this._reify();\n this.state = 'reified';\n } finally {\n if (this.state === 'reifying') {\n this.state = 'errored';\n }\n }\n };\n\n Module.prototype._reify = function () {\n var reified = this.reified.slice();\n for (var i = 0; i < reified.length; i++) {\n var mod = reified[i];\n reified[i] = mod.exports ? mod.exports : mod.module.exports();\n }\n return reified;\n };\n\n Module.prototype.findDeps = function (pending) {\n if (this.state !== 'new') {\n return;\n }\n\n this.state = 'pending';\n\n var deps = this.deps;\n\n for (var i = 0; i < deps.length; i++) {\n var dep = deps[i];\n var entry = this.reified[i] = { exports: undefined, module: undefined };\n if (dep === 'exports') {\n this.hasExportsAsDep = true;\n entry.exports = this.module.exports;\n } else if (dep === 'require') {\n entry.exports = this.makeRequire();\n } else if (dep === 'module') {\n entry.exports = this.module;\n } else {\n entry.module = findModule(resolve(dep, this.id), this.id, pending);\n }\n }\n };\n\n Module.prototype.makeRequire = function () {\n var id = this.id;\n var r = function (dep) {\n return require(resolve(dep, id));\n };\n r['default'] = r;\n r.moduleId = id;\n r.has = function (dep) {\n return has(resolve(dep, id));\n };\n return r;\n };\n\n define = function (id, deps, callback) {\n var module = registry[id];\n\n // If a module for this id has already been defined and is in any state\n // other than `new` (meaning it has been or is currently being required),\n // then we return early to avoid redefinition.\n if (module && module.state !== 'new') {\n return;\n }\n\n if (arguments.length < 2) {\n unsupportedModule(arguments.length);\n }\n\n if (!Array.isArray(deps)) {\n callback = deps;\n deps = [];\n }\n\n if (callback instanceof Alias) {\n registry[id] = new Module(callback.id, deps, callback, true);\n } else {\n registry[id] = new Module(id, deps, callback, false);\n }\n };\n\n define.exports = function (name, defaultExport) {\n var module = registry[name];\n\n // If a module for this name has already been defined and is in any state\n // other than `new` (meaning it has been or is currently being required),\n // then we return early to avoid redefinition.\n if (module && module.state !== 'new') {\n return;\n }\n\n module = new Module(name, [], noop, null);\n module.module.exports = defaultExport;\n module.state = 'finalized';\n registry[name] = module;\n\n return module;\n };\n\n function noop() {}\n // we don't support all of AMD\n // define.amd = {};\n\n function Alias(id) {\n this.id = id;\n }\n\n define.alias = function (id, target) {\n if (arguments.length === 2) {\n return define(target, new Alias(id));\n }\n\n return new Alias(id);\n };\n\n function missingModule(id, referrer) {\n throw new Error('Could not find module `' + id + '` imported from `' + referrer + '`');\n }\n\n function findModule(id, referrer, pending) {\n var mod = registry[id] || registry[id + '/index'];\n\n while (mod && mod.isAlias) {\n mod = registry[mod.id] || registry[mod.id + '/index'];\n }\n\n if (!mod) {\n missingModule(id, referrer);\n }\n\n if (pending && mod.state !== 'pending' && mod.state !== 'finalized') {\n mod.findDeps(pending);\n pending.push(mod);\n }\n return mod;\n }\n\n function resolve(child, id) {\n if (child.charAt(0) !== '.') {\n return child;\n }\n\n\n var parts = child.split('/');\n var nameParts = id.split('/');\n var parentBase = nameParts.slice(0, -1);\n\n for (var i = 0, l = parts.length; i < l; i++) {\n var part = parts[i];\n\n if (part === '..') {\n if (parentBase.length === 0) {\n throw new Error('Cannot access parent module of root');\n }\n parentBase.pop();\n } else if (part === '.') {\n continue;\n } else {\n parentBase.push(part);\n }\n }\n\n return parentBase.join('/');\n }\n\n function has(id) {\n return !!(registry[id] || registry[id + '/index']);\n }\n\n requirejs.entries = requirejs._eak_seen = registry;\n requirejs.has = has;\n requirejs.unsee = function (id) {\n findModule(id, '(unsee)', false).unsee();\n };\n\n requirejs.clear = function () {\n requirejs.entries = requirejs._eak_seen = registry = dict();\n seen = dict();\n };\n\n // This code primes the JS engine for good performance by warming the\n // JIT compiler for these functions.\n define('foo', function () {});\n define('foo/bar', [], function () {});\n define('foo/asdf', ['module', 'exports', 'require'], function (module, exports, require) {\n if (require.has('foo/bar')) {\n require('foo/bar');\n }\n });\n define('foo/baz', [], define.alias('foo'));\n define('foo/quz', define.alias('foo'));\n define.alias('foo', 'foo/qux');\n define('foo/bar', ['foo', './quz', './baz', './asdf', './bar', '../foo'], function () {});\n define('foo/main', ['foo/bar'], function () {});\n define.exports('foo/exports', {});\n\n require('foo/exports');\n require('foo/main');\n require.unsee('foo/bar');\n\n requirejs.clear();\n\n if (typeof exports === 'object' && typeof module === 'object' && module.exports) {\n module.exports = { require: require, define: define };\n }\n})(this);","export interface IPlatform {\n setTimeout(fn: Function, ms: number): any;\n clearTimeout(id: any): void;\n next(): any;\n clearNext(): void;\n now(): number;\n}\n\nconst SET_TIMEOUT = setTimeout;\nconst NOOP = () => {};\n\nexport function buildNext(flush: () => void): () => void {\n // Using \"promises first\" here to:\n //\n // 1) Ensure more consistent experience on browsers that\n // have differently queued microtasks (separate queues for\n // MutationObserver vs Promises).\n // 2) Ensure better debugging experiences (it shows up in Chrome\n // call stack as \"Promise.then (async)\") which is more consistent\n // with user expectations\n //\n // When Promise is unavailable use MutationObserver (mostly so that we\n // still get microtasks on IE11), and when neither MutationObserver and\n // Promise are present use a plain old setTimeout.\n if (typeof Promise === 'function') {\n const autorunPromise = Promise.resolve();\n\n return () => autorunPromise.then(flush);\n } else if (typeof MutationObserver === 'function') {\n let iterations = 0;\n let observer = new MutationObserver(flush);\n let node = document.createTextNode('');\n observer.observe(node, { characterData: true });\n\n return () => {\n iterations = ++iterations % 2;\n node.data = '' + iterations;\n return iterations;\n };\n } else {\n return () => SET_TIMEOUT(flush, 0);\n }\n}\n\nexport function buildPlatform(flush: () => void): IPlatform {\n let clearNext = NOOP;\n\n return {\n setTimeout(fn, ms) {\n return setTimeout(fn, ms);\n },\n\n clearTimeout(timerId: number) {\n return clearTimeout(timerId);\n },\n\n now() {\n return Date.now();\n },\n\n next: buildNext(flush),\n clearNext,\n };\n}\n","import { IQueueItem } from './interfaces';\n\ntype MaybeError = Error | undefined;\n\nconst NUMBER = /\\d+/;\n\nconst enum QueueItemPosition {\n target,\n method,\n args,\n stack\n}\n\nexport const QUEUE_ITEM_LENGTH = 5;\nexport const TIMERS_OFFSET = 7;\n\nexport function isCoercableNumber(suspect) {\n let type = typeof suspect;\n return type === 'number' && suspect === suspect || type === 'string' && NUMBER.test(suspect);\n}\n\nexport function getOnError(options) {\n return options.onError || (options.onErrorTarget && options.onErrorTarget[options.onErrorMethod]);\n}\n\nexport function findItem(target, method, collection) {\n let index = -1;\n\n for (let i = 0, l = collection.length; i < l; i += QUEUE_ITEM_LENGTH) {\n if (collection[i] === target && collection[i + 1] === method) {\n index = i;\n break;\n }\n }\n\n return index;\n}\n\nexport function findTimerItem(target, method, collection) {\n let index = -1;\n\n for (let i = 2, l = collection.length; i < l; i += TIMERS_OFFSET) {\n if (collection[i] === target && collection[i + 1] === method) {\n index = i - 2;\n break;\n }\n }\n\n return index;\n}\n\nexport function getQueueItems(items: any[], queueItemLength: number, queueItemPositionOffset: number = 0): IQueueItem[] {\n let queueItems: IQueueItem[] = [];\n\n for (let i = 0; i < items.length; i += queueItemLength) {\n let maybeError: MaybeError = items[i + QueueItemPosition.stack + queueItemPositionOffset];\n let queueItem = {\n target: items[i + QueueItemPosition.target + queueItemPositionOffset],\n method: items[i + QueueItemPosition.method + queueItemPositionOffset],\n args: items[i + QueueItemPosition.args + queueItemPositionOffset],\n stack: maybeError !== undefined && 'stack' in maybeError ? maybeError.stack : ''\n };\n\n queueItems.push(queueItem);\n }\n\n return queueItems;\n}\n","import { TIMERS_OFFSET } from './utils';\n\nexport default function binarySearch(time, timers) {\n let start = 0;\n let end = timers.length - TIMERS_OFFSET;\n let middle;\n let l;\n\n while (start < end) {\n // since timers is an array of pairs 'l' will always\n // be an integer\n l = (end - start) / TIMERS_OFFSET;\n\n // compensate for the index in case even number\n // of pairs inside timers\n middle = start + l - (l % TIMERS_OFFSET);\n\n if (time >= timers[middle]) {\n start = middle + TIMERS_OFFSET;\n } else {\n end = middle;\n }\n }\n\n return (time >= timers[start]) ? start + TIMERS_OFFSET : start;\n}\n","import { IQueueItem } from './interfaces';\nimport {\n findItem,\n getOnError,\n getQueueItems,\n QUEUE_ITEM_LENGTH\n} from './utils';\n\nexport const enum QUEUE_STATE {\n Pause = 1\n}\n\nexport default class Queue {\n private name: string;\n private globalOptions: any;\n private options: any;\n private _queueBeingFlushed: any[] = [];\n private targetQueues = new Map();\n private index = 0;\n private _queue: any[] = [];\n\n constructor(name: string, options: any = {}, globalOptions: any = {}) {\n this.name = name;\n this.options = options;\n this.globalOptions = globalOptions;\n }\n\n public stackFor(index) {\n if (index < this._queue.length) {\n let entry = this._queue[(index * QUEUE_ITEM_LENGTH) + 3];\n if (entry) {\n return entry.stack;\n } else {\n return null;\n }\n }\n }\n\n public consoleTaskFor(index, inQueueBeingFlushed = false) {\n let q = inQueueBeingFlushed ? this._queueBeingFlushed : this._queue;\n if (index < q.length) {\n return q[(index * QUEUE_ITEM_LENGTH) + 4];\n }\n }\n\n public flush(sync?: Boolean) {\n let { before, after } = this.options;\n let target;\n let method;\n let args;\n let errorRecordedForStack;\n let consoleTask;\n\n this.targetQueues.clear();\n if (this._queueBeingFlushed.length === 0) {\n this._queueBeingFlushed = this._queue;\n this._queue = [];\n }\n\n if (before !== undefined) {\n before();\n }\n\n let invoke;\n let queueItems = this._queueBeingFlushed;\n if (queueItems.length > 0) {\n let onError = getOnError(this.globalOptions);\n invoke = onError ? this.invokeWithOnError : this.invoke;\n\n for (let i = this.index; i < queueItems.length; i += QUEUE_ITEM_LENGTH) {\n this.index += QUEUE_ITEM_LENGTH;\n\n method = queueItems[i + 1];\n // method could have been nullified / canceled during flush\n if (method !== null) {\n //\n // ** Attention intrepid developer **\n //\n // To find out the stack of this task when it was scheduled onto\n // the run loop, add the following to your app.js:\n //\n // Ember.run.backburner.DEBUG = true; // NOTE: This slows your app, don't leave it on in production.\n //\n // Once that is in place, when you are at a breakpoint and navigate\n // here in the stack explorer, you can look at `errorRecordedForStack.stack`,\n // which will be the captured stack when this job was scheduled.\n //\n // One possible long-term solution is the following Chrome issue:\n // https://bugs.chromium.org/p/chromium/issues/detail?id=332624\n //\n target = queueItems[i];\n args = queueItems[i + 2];\n errorRecordedForStack = queueItems[i + 3]; // Debugging assistance\n consoleTask = queueItems[i + 4];\n if(consoleTask){\n consoleTask.run(invoke.bind(this, target, method, args, onError, errorRecordedForStack))\n }else{\n invoke(target, method, args, onError, errorRecordedForStack)\n }\n }\n\n if (this.index !== this._queueBeingFlushed.length &&\n this.globalOptions.mustYield && this.globalOptions.mustYield()) {\n return QUEUE_STATE.Pause;\n }\n }\n }\n\n if (after !== undefined) {\n after();\n }\n\n this._queueBeingFlushed.length = 0;\n this.index = 0;\n if (sync !== false && this._queue.length > 0) {\n // check if new items have been added\n this.flush(true);\n }\n }\n\n public hasWork() {\n return this._queueBeingFlushed.length > 0 || this._queue.length > 0;\n }\n\n public cancel({ target, method }) {\n let queue = this._queue;\n let targetQueueMap = this.targetQueues.get(target);\n\n if (targetQueueMap !== undefined) {\n targetQueueMap.delete(method);\n }\n\n let index = findItem(target, method, queue);\n\n if (index > -1) {\n queue[index + 1] = null;\n return true;\n }\n\n // if not found in current queue\n // could be in the queue that is being flushed\n queue = this._queueBeingFlushed;\n\n index = findItem(target, method, queue);\n if (index > -1) {\n queue[index + 1] = null;\n return true;\n }\n\n return false;\n }\n\n public push(target, method, args, stack, consoleTask): { queue: Queue, target, method } {\n this._queue.push(target, method, args, stack, consoleTask);\n\n return {\n queue: this,\n target,\n method\n };\n }\n\n public pushUnique(target, method, args, stack, consoleTask): { queue: Queue, target, method } {\n let localQueueMap = this.targetQueues.get(target);\n\n if (localQueueMap === undefined) {\n localQueueMap = new Map();\n this.targetQueues.set(target, localQueueMap);\n }\n\n let index = localQueueMap.get(method);\n if (index === undefined) {\n let queueIndex = this._queue.push(target, method, args, stack, consoleTask) - QUEUE_ITEM_LENGTH;\n localQueueMap.set(method, queueIndex);\n } else {\n let queue = this._queue;\n queue[index + 2] = args; // replace args\n queue[index + 3] = stack; // replace stack\n queue[index + 3] = consoleTask; // replace consoleTask\n }\n\n return {\n queue: this,\n target,\n method\n };\n }\n\n public _getDebugInfo(debugEnabled: boolean): IQueueItem[] | undefined {\n if (debugEnabled) {\n let debugInfo: IQueueItem[] = getQueueItems(this._queue, QUEUE_ITEM_LENGTH);\n\n return debugInfo;\n }\n\n return undefined;\n }\n\n private invoke(target, method, args /*, onError, errorRecordedForStack */) {\n if (args === undefined) {\n method.call(target);\n } else {\n method.apply(target, args);\n }\n }\n\n private invokeWithOnError(target, method, args, onError, errorRecordedForStack) {\n try {\n if (args === undefined) {\n method.call(target);\n } else {\n method.apply(target, args);\n }\n } catch (error) {\n onError(error, errorRecordedForStack);\n }\n }\n}\n","import { IQueueItem } from './interfaces';\nimport Queue, { QUEUE_STATE } from './queue';\n\nexport interface IDebugInfo {\n [key: string]: IQueueItem[] | undefined;\n}\n\nexport default class DeferredActionQueues {\n public queues: { [name: string]: Queue } = {};\n public queueNameIndex = 0;\n\n private queueNames: string[];\n\n constructor(queueNames: string[] = [], options: any) {\n this.queueNames = queueNames;\n\n queueNames.reduce(function(queues, queueName) {\n queues[queueName] = new Queue(queueName, options[queueName], options);\n return queues;\n }, this.queues);\n }\n\n /**\n * @method schedule\n * @param {String} queueName\n * @param {Any} target\n * @param {Any} method\n * @param {Any} args\n * @param {Boolean} onceFlag\n * @param {Any} stack\n * @return queue\n */\n public schedule(queueName: string, target: any, method: any, args: any, onceFlag: boolean, stack: any, consoleTask: any) {\n let queues = this.queues;\n let queue = queues[queueName];\n\n if (queue === undefined) {\n throw new Error(`You attempted to schedule an action in a queue (${queueName}) that doesn\\'t exist`);\n }\n\n if (method === undefined || method === null) {\n throw new Error(`You attempted to schedule an action in a queue (${queueName}) for a method that doesn\\'t exist`);\n }\n\n this.queueNameIndex = 0;\n\n if (onceFlag) {\n return queue.pushUnique(target, method, args, stack, consoleTask);\n } else {\n return queue.push(target, method, args, stack, consoleTask);\n }\n }\n\n /**\n * DeferredActionQueues.flush() calls Queue.flush()\n *\n * @method flush\n * @param {Boolean} fromAutorun\n */\n public flush(fromAutorun = false) {\n let queue;\n let queueName;\n let numberOfQueues = this.queueNames.length;\n\n while (this.queueNameIndex < numberOfQueues) {\n queueName = this.queueNames[this.queueNameIndex];\n queue = this.queues[queueName];\n\n if (queue.hasWork() === false) {\n this.queueNameIndex++;\n if (fromAutorun && this.queueNameIndex < numberOfQueues) {\n return QUEUE_STATE.Pause;\n }\n } else {\n if (queue.flush(false /* async */) === QUEUE_STATE.Pause) {\n return QUEUE_STATE.Pause;\n }\n }\n }\n }\n\n /**\n * Returns debug information for the current queues.\n *\n * @method _getDebugInfo\n * @param {Boolean} debugEnabled\n * @returns {IDebugInfo | undefined}\n */\n public _getDebugInfo(debugEnabled: boolean): IDebugInfo | undefined {\n if (debugEnabled) {\n let debugInfo: IDebugInfo = {};\n let queue: Queue;\n let queueName: string;\n let numberOfQueues: number = this.queueNames.length;\n let i: number = 0;\n\n while (i < numberOfQueues) {\n queueName = this.queueNames[i];\n queue = this.queues[queueName];\n\n debugInfo[queueName] = queue._getDebugInfo(debugEnabled);\n i++;\n }\n\n return debugInfo;\n }\n\n return;\n }\n}\n","// accepts a function that when invoked will return an iterator\n// iterator will drain until completion\nexport interface Iterable {\n next: () => { done: boolean, value?: any };\n}\n\nexport default function(fn: () => Iterable) {\n let iterator = fn();\n let result = iterator.next();\n\n while (result.done === false) {\n result.value();\n result = iterator.next();\n }\n}\n","export {\n buildPlatform,\n IPlatform\n} from './backburner/platform';\n\nimport {\n buildNext,\n buildPlatform,\n IPlatform,\n} from './backburner/platform';\nimport {\n findTimerItem,\n getOnError,\n getQueueItems,\n isCoercableNumber,\n TIMERS_OFFSET\n} from './backburner/utils';\n\nimport searchTimer from './backburner/binary-search';\n\nimport DeferredActionQueues from './backburner/deferred-action-queues';\nexport type { DeferredActionQueues };\n\nimport iteratorDrain, { Iterable } from './backburner/iterator-drain';\n\n\nimport Queue, { QUEUE_STATE } from './backburner/queue';\n\nexport type Timer = string | number;\n\nconst noop = function() {};\n\nconst DISABLE_SCHEDULE = Object.freeze([]);\n\ninterface ConsoleWithCreateTask extends Console {\n createTask(name: string): ConsoleTask;\n}\n\ninterface ConsoleTask {\n run(f: () => T): T;\n}\n\nfunction parseArgs(...args: any[]);\nfunction parseArgs() {\n let length = arguments.length;\n\n let args;\n let method;\n let target;\n\n if (length === 0) {\n } else if (length === 1) {\n target = null;\n method = arguments[0];\n } else {\n let argsIndex = 2;\n let methodOrTarget = arguments[0];\n let methodOrArgs = arguments[1];\n let type = typeof methodOrArgs;\n if (type === 'function') {\n target = methodOrTarget;\n method = methodOrArgs;\n } else if (methodOrTarget !== null && type === 'string' && methodOrArgs in methodOrTarget) {\n target = methodOrTarget;\n method = target[methodOrArgs];\n } else if (typeof methodOrTarget === 'function') {\n argsIndex = 1;\n target = null;\n method = methodOrTarget;\n }\n\n if (length > argsIndex) {\n let len = length - argsIndex;\n args = new Array(len);\n for (let i = 0; i < len; i++) {\n args[i] = arguments[i + argsIndex];\n }\n }\n }\n\n return [target, method, args];\n}\n\nfunction parseTimerArgs(...args: any[]);\nfunction parseTimerArgs() {\n let [target, method, args] = parseArgs(...arguments);\n let wait = 0;\n let length = args !== undefined ? args.length : 0;\n\n if (length > 0) {\n let last = args[length - 1];\n if (isCoercableNumber(last)) {\n wait = parseInt(args.pop(), 10);\n }\n }\n\n return [target, method, args, wait];\n}\n\nfunction parseDebounceArgs(...args: any[]);\nfunction parseDebounceArgs() {\n let target;\n let method;\n let isImmediate;\n let args;\n let wait;\n\n if (arguments.length === 2) {\n method = arguments[0];\n wait = arguments[1];\n target = null;\n } else {\n [target, method, args] = parseArgs(...arguments);\n\n if (args === undefined) {\n wait = 0;\n } else {\n wait = args.pop();\n\n if (!isCoercableNumber(wait)) {\n isImmediate = wait === true;\n wait = args.pop();\n }\n }\n }\n\n wait = parseInt(wait, 10);\n\n return [target, method, args, wait, isImmediate];\n}\n\nlet UUID = 0;\n\nlet beginCount = 0;\nlet endCount = 0;\nlet beginEventCount = 0;\nlet endEventCount = 0;\nlet runCount = 0;\nlet joinCount = 0;\nlet deferCount = 0;\nlet scheduleCount = 0;\nlet scheduleIterableCount = 0;\nlet deferOnceCount = 0;\nlet scheduleOnceCount = 0;\nlet setTimeoutCount = 0;\nlet laterCount = 0;\nlet throttleCount = 0;\nlet debounceCount = 0;\nlet cancelTimersCount = 0;\nlet cancelCount = 0;\nlet autorunsCreatedCount = 0;\nlet autorunsCompletedCount = 0;\nlet deferredActionQueuesCreatedCount = 0;\nlet nestedDeferredActionQueuesCreated = 0;\n\nexport interface IBackburnerOptions {\n defaultQueue?: string;\n onBegin?: (currentInstance: DeferredActionQueues, previousInstance: DeferredActionQueues) => void;\n onEnd?: (currentInstance: DeferredActionQueues, nextInstance: DeferredActionQueues) => void;\n onError?: (error: any, errorRecordedForStack?: any) => void;\n onErrorTarget?: any;\n onErrorMethod?: string;\n mustYield?: () => boolean;\n _buildPlatform?: (flush: () => void) => IPlatform;\n flush?(queueName: string, flush: () => void): void;\n}\n\nexport default class Backburner {\n public static Queue = Queue;\n public static buildPlatform = buildPlatform;\n public static buildNext = buildNext;\n\n public DEBUG = false;\n public ASYNC_STACKS = false;\n\n public currentInstance: DeferredActionQueues | null = null;\n\n public options: IBackburnerOptions;\n\n public get counters() {\n return {\n begin: beginCount,\n end: endCount,\n events: {\n begin: beginEventCount,\n end: endEventCount,\n },\n autoruns: {\n created: autorunsCreatedCount,\n completed: autorunsCompletedCount,\n },\n run: runCount,\n join: joinCount,\n defer: deferCount,\n schedule: scheduleCount,\n scheduleIterable: scheduleIterableCount,\n deferOnce: deferOnceCount,\n scheduleOnce: scheduleOnceCount,\n setTimeout: setTimeoutCount,\n later: laterCount,\n throttle: throttleCount,\n debounce: debounceCount,\n cancelTimers: cancelTimersCount,\n cancel: cancelCount,\n loops: {\n total: deferredActionQueuesCreatedCount,\n nested: nestedDeferredActionQueuesCreated,\n },\n };\n }\n\n private _onBegin: (currentInstance: DeferredActionQueues, previousInstance: DeferredActionQueues | null) => void;\n private _onEnd: (currentInstance: DeferredActionQueues, nextInstance: DeferredActionQueues | null) => void;\n private queueNames: string[];\n private instanceStack: DeferredActionQueues[] = [];\n private _eventCallbacks: {\n end: Function[];\n begin: Function[];\n } = {\n end: [],\n begin: []\n };\n\n private _timerTimeoutId: number | null = null;\n private _timers: any[] = [];\n private _platform: IPlatform;\n\n private _boundRunExpiredTimers: () => void;\n\n private _autorun = false;\n private _autorunStack: Error | undefined | null = null;\n private _boundAutorunEnd: () => void;\n private _defaultQueue: string;\n\n constructor(queueNames: string[], options?: IBackburnerOptions) {\n this.queueNames = queueNames;\n this.options = options || {};\n if (typeof this.options.defaultQueue === 'string') {\n this._defaultQueue = this.options.defaultQueue;\n } else {\n this._defaultQueue = this.queueNames[0];\n }\n\n this._onBegin = this.options.onBegin || noop;\n this._onEnd = this.options.onEnd || noop;\n\n this._boundRunExpiredTimers = this._runExpiredTimers.bind(this);\n\n this._boundAutorunEnd = () => {\n autorunsCompletedCount++;\n\n // if the autorun was already flushed, do nothing\n if (this._autorun === false) { return; }\n\n this._autorun = false;\n this._autorunStack = null;\n this._end(true /* fromAutorun */);\n };\n\n let builder = this.options._buildPlatform || buildPlatform;\n this._platform = builder(this._boundAutorunEnd);\n }\n\n public get defaultQueue() {\n return this._defaultQueue;\n }\n /*\n @method begin\n @return instantiated class DeferredActionQueues\n */\n public begin(): DeferredActionQueues {\n beginCount++;\n let options = this.options;\n let previousInstance = this.currentInstance;\n let current;\n\n if (this._autorun !== false) {\n current = previousInstance;\n this._cancelAutorun();\n } else {\n if (previousInstance !== null) {\n nestedDeferredActionQueuesCreated++;\n this.instanceStack.push(previousInstance);\n }\n deferredActionQueuesCreatedCount++;\n current = this.currentInstance = new DeferredActionQueues(this.queueNames, options);\n beginEventCount++;\n this._trigger('begin', current, previousInstance);\n }\n\n this._onBegin(current, previousInstance);\n\n return current;\n }\n\n public end() {\n endCount++;\n this._end(false);\n }\n\n public on(eventName, callback) {\n if (typeof callback !== 'function') {\n throw new TypeError(`Callback must be a function`);\n }\n let callbacks = this._eventCallbacks[eventName];\n if (callbacks !== undefined) {\n callbacks.push(callback);\n } else {\n throw new TypeError(`Cannot on() event ${eventName} because it does not exist`);\n }\n }\n\n public off(eventName, callback) {\n let callbacks = this._eventCallbacks[eventName];\n if (!eventName || callbacks === undefined) {\n throw new TypeError(`Cannot off() event ${eventName} because it does not exist`);\n }\n let callbackFound = false;\n if (callback) {\n for (let i = 0; i < callbacks.length; i++) {\n if (callbacks[i] === callback) {\n callbackFound = true;\n callbacks.splice(i, 1);\n i--;\n }\n }\n }\n if (!callbackFound) {\n throw new TypeError(`Cannot off() callback that does not exist`);\n }\n }\n\n public run(target: Function);\n public run(target: Function | any | null, method?: Function | string, ...args);\n public run(target: any | null | undefined, method?: Function, ...args: any[]);\n public run() {\n runCount++;\n let [target, method, args] = parseArgs(...arguments);\n return this._run(target, method, args);\n }\n\n /*\n Join the passed method with an existing queue and execute immediately,\n if there isn't one use `Backburner#run`.\n\n The join method is like the run method except that it will schedule into\n an existing queue if one already exists. In either case, the join method will\n immediately execute the passed in function and return its result.\n\n @method join\n @param {Object} target\n @param {Function} method The method to be executed\n @param {any} args The method arguments\n @return method result\n */\n public join(target: Function);\n public join(target: Function | any | null, method?: Function | string, ...args);\n public join(target: any | null | undefined, method?: Function, ...args: any[]);\n public join() {\n joinCount++;\n let [target, method, args] = parseArgs(...arguments);\n return this._join(target, method, args);\n }\n\n /**\n * @deprecated please use schedule instead.\n */\n public defer(queueName, target, method, ...args) {\n deferCount++;\n return this.schedule(queueName, target, method, ...args);\n }\n\n /**\n * Schedule the passed function to run inside the specified queue.\n */\n public schedule(queueName: string, method: Function);\n public schedule(queueName: string, target: T, method: U, ...args);\n public schedule(queueName: string, target: any, method: any | Function, ...args);\n public schedule(queueName, ..._args) {\n scheduleCount++;\n let [target, method, args] = parseArgs(..._args);\n let stack = this.DEBUG ? new Error() : undefined;\n let consoleTask = this.createTask(queueName, method);\n return this._ensureInstance().schedule(queueName, target, method, args, false, stack, consoleTask);\n }\n\n /*\n Defer the passed iterable of functions to run inside the specified queue.\n\n @method scheduleIterable\n @param {String} queueName\n @param {Iterable} an iterable of functions to execute\n @return method result\n */\n public scheduleIterable(queueName: string, iterable: () => Iterable) {\n scheduleIterableCount++;\n let stack = this.DEBUG ? new Error() : undefined;\n let consoleTask = this.createTask(queueName, null);\n return this._ensureInstance().schedule(queueName, null, iteratorDrain, [iterable], false, stack, consoleTask);\n }\n\n /**\n * @deprecated please use scheduleOnce instead.\n */\n public deferOnce(queueName, target, method, ...args) {\n deferOnceCount++;\n return this.scheduleOnce(queueName, target, method, ...args);\n }\n\n /**\n * Schedule the passed function to run once inside the specified queue.\n */\n public scheduleOnce(queueName: string, method: Function);\n public scheduleOnce(queueName: string, target: T, method: U, ...args);\n public scheduleOnce(queueName: string, target: any | null, method: any | Function, ...args);\n public scheduleOnce(queueName, ..._args) {\n scheduleOnceCount++;\n let [target, method, args] = parseArgs(..._args);\n let stack = this.DEBUG ? new Error() : undefined;\n let consoleTask = this.createTask(queueName, method);\n return this._ensureInstance().schedule(queueName, target, method, args, true, stack, consoleTask);\n }\n\n /**\n * @deprecated use later instead.\n */\n public setTimeout(...args);\n public setTimeout() {\n setTimeoutCount++;\n return this.later(...arguments);\n }\n\n public later(...args: any[]): Timer; // fixes `this.later(...arguments)` usage in `setTimeout`\n public later(target: T, methodName: keyof T, wait?: number | string): Timer;\n public later(target: T, methodName: keyof T, arg1: any, wait?: number | string): Timer;\n public later(target: T, methodName: keyof T, arg1: any, arg2: any, wait?: number | string): Timer;\n public later(target: T, methodName: keyof T, arg1: any, arg2: any, arg3: any, wait?: number | string): Timer;\n\n // with target, with optional immediate\n public later(thisArg: any | null, method: () => void, wait?: number | string): Timer;\n public later(thisArg: any | null, method: (arg1: A) => void, arg1: A, wait?: number | string): Timer;\n public later(thisArg: any | null, method: (arg1: A, arg2: B) => void, arg1: A, arg2: B, wait?: number | string): Timer;\n public later(thisArg: any | null, method: (arg1: A, arg2: B, arg3: C) => void, arg1: A, arg2: B, arg3: C, wait?: number | string): Timer;\n\n // without target, with optional immediate\n public later(method: () => void, wait?: number | string): Timer;\n public later(method: (arg1: A) => void, arg1: A, wait?: number | string): Timer;\n public later(method: (arg1: A, arg2: B) => void, arg1: A, arg2: B, wait?: number | string): Timer;\n public later(method: (arg1: A, arg2: B, arg3: C) => void, arg1: A, arg2: B, arg3: C, wait?: number | string): Timer;\n public later() {\n laterCount++;\n let [target, method, args, wait] = parseTimerArgs(...arguments);\n return this._later(target, method, args, wait);\n }\n\n public throttle(target: T, methodName: keyof T, wait?: number | string, immediate?: boolean): Timer;\n public throttle(target: T, methodName: keyof T, arg1: any, wait?: number | string, immediate?: boolean): Timer;\n public throttle(target: T, methodName: keyof T, arg1: any, arg2: any, wait?: number | string, immediate?: boolean): Timer;\n public throttle(target: T, methodName: keyof T, arg1: any, arg2: any, arg3: any, wait?: number | string, immediate?: boolean): Timer;\n\n // with target, with immediate\n public throttle(thisArg: any | null, method: () => void, wait?: number | string, immediate?: boolean): Timer;\n public throttle(thisArg: any | null, method: (arg1: A) => void, arg1: A, wait?: number | string, immediate?: boolean): Timer;\n public throttle(thisArg: any | null, method: (arg1: A, arg2: B) => void, arg1: A, arg2: B, wait?: number | string, immediate?: boolean): Timer;\n public throttle(thisArg: any | null, method: (arg1: A, arg2: B, arg3: C) => void, arg1: A, arg2: B, arg3: C, wait?: number | string, immediate?: boolean): Timer;\n\n // without target, with immediate\n public throttle(method: () => void, wait?: number | string, immediate?: boolean): Timer;\n public throttle(method: (arg1: A) => void, arg1: A, wait?: number | string, immediate?: boolean): Timer;\n public throttle(method: (arg1: A, arg2: B) => void, arg1: A, arg2: B, wait?: number | string, immediate?: boolean): Timer;\n public throttle(method: (arg1: A, arg2: B, arg3: C) => void, arg1: A, arg2: B, arg3: C, wait?: number | string, immediate?: boolean): Timer;\n public throttle(): Timer {\n throttleCount++;\n let [target, method, args, wait, isImmediate = true] = parseDebounceArgs(...arguments);\n\n let index = findTimerItem(target, method, this._timers);\n let timerId;\n if (index === -1) {\n timerId = this._later(target, method, isImmediate ? DISABLE_SCHEDULE : args, wait);\n\n if (isImmediate) {\n this._join(target, method, args);\n }\n } else {\n timerId = this._timers[index + 1];\n let argIndex = index + 4;\n if (this._timers[argIndex] !== DISABLE_SCHEDULE) {\n this._timers[argIndex] = args;\n }\n }\n\n return timerId;\n }\n\n // with target, with method name, with optional immediate\n public debounce(target: T, methodName: keyof T, wait: number | string, immediate?: boolean): Timer;\n public debounce(target: T, methodName: keyof T, arg1: any, wait: number | string, immediate?: boolean): Timer;\n public debounce(target: T, methodName: keyof T, arg1: any, arg2: any, wait: number | string, immediate?: boolean): Timer;\n public debounce(target: T, methodName: keyof T, arg1: any, arg2: any, arg3: any, wait: number | string, immediate?: boolean): Timer;\n\n // with target, with optional immediate\n public debounce(thisArg: any | null, method: () => void, wait: number | string, immediate?: boolean): Timer;\n public debounce(thisArg: any | null, method: (arg1: A) => void, arg1: A, wait: number | string, immediate?: boolean): Timer;\n public debounce(thisArg: any | null, method: (arg1: A, arg2: B) => void, arg1: A, arg2: B, wait: number | string, immediate?: boolean): Timer;\n public debounce(thisArg: any | null, method: (arg1: A, arg2: B, arg3: C) => void, arg1: A, arg2: B, arg3: C, wait: number | string, immediate?: boolean): Timer;\n\n // without target, with optional immediate\n public debounce(method: () => void, wait: number | string, immediate?: boolean): Timer;\n public debounce(method: (arg1: A) => void, arg1: A, wait: number | string, immediate?: boolean): Timer;\n public debounce(method: (arg1: A, arg2: B) => void, arg1: A, arg2: B, wait: number | string, immediate?: boolean): Timer;\n public debounce(method: (arg1: A, arg2: B, arg3: C) => void, arg1: A, arg2: B, arg3: C, wait: number | string, immediate?: boolean): Timer;\n public debounce(): Timer {\n debounceCount++;\n let [target, method, args, wait, isImmediate = false] = parseDebounceArgs(...arguments);\n let _timers = this._timers;\n let index = findTimerItem(target, method, _timers);\n\n let timerId;\n if (index === -1) {\n timerId = this._later(target, method, isImmediate ? DISABLE_SCHEDULE : args, wait);\n if (isImmediate) {\n this._join(target, method, args);\n }\n } else {\n let executeAt = this._platform.now() + wait;\n\n let argIndex = index + 4;\n if (_timers[argIndex] === DISABLE_SCHEDULE) {\n args = DISABLE_SCHEDULE;\n }\n\n timerId = _timers[index + 1];\n let i = searchTimer(executeAt, _timers);\n\n if ((index + TIMERS_OFFSET) === i) {\n _timers[index] = executeAt;\n _timers[argIndex] = args;\n } else {\n let stack = this._timers[index + 5];\n let consoleTask = this._timers[index + 6];\n this._timers.splice(i, 0, executeAt, timerId, target, method, args, stack, consoleTask);\n this._timers.splice(index, TIMERS_OFFSET);\n }\n\n if (index === 0) {\n this._reinstallTimerTimeout();\n }\n }\n\n return timerId;\n }\n\n public cancelTimers() {\n cancelTimersCount++;\n this._clearTimerTimeout();\n this._timers = [];\n this._cancelAutorun();\n }\n\n public hasTimers() {\n return this._timers.length > 0 || this._autorun;\n }\n\n public cancel(timer?) {\n cancelCount++;\n if (timer === null || timer === undefined) { return false; }\n let timerType = typeof timer;\n\n if (timerType === 'number') { // we're cancelling a setTimeout or throttle or debounce\n return this._cancelLaterTimer(timer);\n } else if (timerType === 'object' && timer.queue && timer.method) { // we're cancelling a deferOnce\n return timer.queue.cancel(timer);\n }\n\n return false;\n }\n\n public ensureInstance() {\n this._ensureInstance();\n }\n\n /**\n * Returns debug information related to the current instance of Backburner\n *\n * @method getDebugInfo\n * @returns {Object | undefined} Will return and Object containing debug information if\n * the DEBUG flag is set to true on the current instance of Backburner, else undefined.\n */\n public getDebugInfo() {\n if (this.DEBUG) {\n return {\n autorun: this._autorunStack,\n counters: this.counters,\n timers: getQueueItems(this._timers, TIMERS_OFFSET, 2),\n instanceStack: [this.currentInstance, ...this.instanceStack]\n .map((deferredActionQueue) => deferredActionQueue && deferredActionQueue._getDebugInfo(this.DEBUG))\n };\n }\n\n return undefined;\n }\n\n private _end(fromAutorun: boolean) {\n let currentInstance = this.currentInstance;\n let nextInstance: DeferredActionQueues | null = null;\n\n if (currentInstance === null) {\n throw new Error(`end called without begin`);\n }\n\n // Prevent double-finally bug in Safari 6.0.2 and iOS 6\n // This bug appears to be resolved in Safari 6.0.5 and iOS 7\n let finallyAlreadyCalled = false;\n let result;\n try {\n result = currentInstance.flush(fromAutorun);\n } finally {\n if (!finallyAlreadyCalled) {\n finallyAlreadyCalled = true;\n\n if (result === QUEUE_STATE.Pause) {\n const plannedNextQueue = this.queueNames[currentInstance.queueNameIndex];\n this._scheduleAutorun(plannedNextQueue);\n } else {\n this.currentInstance = null;\n\n if (this.instanceStack.length > 0) {\n nextInstance = this.instanceStack.pop() as DeferredActionQueues;\n this.currentInstance = nextInstance;\n }\n this._trigger('end', currentInstance, nextInstance);\n this._onEnd(currentInstance, nextInstance);\n }\n }\n }\n }\n\n private _join(target, method, args) {\n if (this.currentInstance === null) {\n return this._run(target, method, args);\n }\n\n if (target === undefined && args === undefined) {\n return method();\n } else {\n return method.apply(target, args);\n }\n }\n\n private _run(target, method, args) {\n let onError = getOnError(this.options);\n\n this.begin();\n\n if (onError) {\n try {\n return method.apply(target, args);\n } catch (error) {\n onError(error);\n } finally {\n this.end();\n }\n } else {\n try {\n return method.apply(target, args);\n } finally {\n this.end();\n }\n }\n }\n\n private _cancelAutorun() {\n if (this._autorun) {\n this._platform.clearNext();\n this._autorun = false;\n this._autorunStack = null;\n }\n }\n\n private _later(target, method, args, wait) {\n let stack = this.DEBUG ? new Error() : undefined;\n let consoleTask = this.createTask('(timer)', method);\n let executeAt = this._platform.now() + wait;\n let id = UUID++;\n\n if (this._timers.length === 0) {\n this._timers.push(executeAt, id, target, method, args, stack, consoleTask);\n this._installTimerTimeout();\n } else {\n // find position to insert\n let i = searchTimer(executeAt, this._timers);\n this._timers.splice(i, 0, executeAt, id, target, method, args, stack, consoleTask);\n\n // always reinstall since it could be out of sync\n this._reinstallTimerTimeout();\n }\n return id;\n }\n\n private _cancelLaterTimer(timer) {\n for (let i = 1; i < this._timers.length; i += TIMERS_OFFSET) {\n if (this._timers[i] === timer) {\n this._timers.splice(i - 1, TIMERS_OFFSET);\n if (i === 1) {\n this._reinstallTimerTimeout();\n }\n return true;\n }\n }\n return false;\n }\n\n /**\n Trigger an event. Supports up to two arguments. Designed around\n triggering transition events from one run loop instance to the\n next, which requires an argument for the instance and then\n an argument for the next instance.\n\n @private\n @method _trigger\n @param {String} eventName\n @param {any} arg1\n @param {any} arg2\n */\n private _trigger(eventName: string, arg1: T, arg2: U) {\n let callbacks = this._eventCallbacks[eventName];\n if (callbacks !== undefined) {\n for (let i = 0; i < callbacks.length; i++) {\n callbacks[i](arg1, arg2);\n }\n }\n }\n\n private _runExpiredTimers() {\n this._timerTimeoutId = null;\n if (this._timers.length > 0) {\n this.begin();\n this._scheduleExpiredTimers();\n this.end();\n }\n }\n\n private _scheduleExpiredTimers() {\n let timers = this._timers;\n let i = 0;\n let l = timers.length;\n let defaultQueue = this._defaultQueue;\n let n = this._platform.now();\n\n for (; i < l; i += TIMERS_OFFSET) {\n let executeAt = timers[i];\n if (executeAt > n) { break; }\n let args = timers[i + 4];\n if (args !== DISABLE_SCHEDULE) {\n let target = timers[i + 2];\n let method = timers[i + 3];\n let stack = timers[i + 5];\n let consoleTask = timers[i + 6];\n this.currentInstance!.schedule(defaultQueue, target, method, args, false, stack, consoleTask);\n }\n }\n\n timers.splice(0, i);\n this._installTimerTimeout();\n }\n\n private _reinstallTimerTimeout() {\n this._clearTimerTimeout();\n this._installTimerTimeout();\n }\n\n private _clearTimerTimeout() {\n if (this._timerTimeoutId === null) { return; }\n this._platform.clearTimeout(this._timerTimeoutId);\n this._timerTimeoutId = null;\n }\n\n private _installTimerTimeout() {\n if (this._timers.length === 0) { return; }\n let minExpiresAt = this._timers[0];\n let n = this._platform.now();\n let wait = Math.max(0, minExpiresAt - n);\n this._timerTimeoutId = this._platform.setTimeout(this._boundRunExpiredTimers, wait);\n }\n\n private _ensureInstance(): DeferredActionQueues {\n let currentInstance = this.currentInstance;\n if (currentInstance === null) {\n this._autorunStack = this.DEBUG ? new Error() : undefined;\n currentInstance = this.begin();\n this._scheduleAutorun(this.queueNames[0]);\n }\n return currentInstance;\n }\n\n private _scheduleAutorun(plannedNextQueue: string) {\n autorunsCreatedCount++;\n\n const next = this._platform.next;\n const flush = this.options.flush;\n\n if (flush) {\n flush(plannedNextQueue, next);\n } else {\n next();\n }\n\n this._autorun = true;\n }\n\n private createTask(queueName, method){\n if (this.ASYNC_STACKS && console['createTask']) {\n return (console as ConsoleWithCreateTask).createTask(\n `runloop ${queueName} | ${method?.name || ''}`\n );\n }\n }\n}\n","/* eslint-disable no-empty */\n/* global require */\n\n(function () {\n try {\n require('ember-cli-deprecation-workflow').default();\n } catch (e) {}\n})();\n","define(\"I18n\", [\n \"exports\",\n \"discourse-i18n\",\n \"discourse/lib/deprecated\",\n], function (exports, I18n, deprecated) {\n exports.default = I18n.default;\n\n exports.t = function () {\n deprecated.default(\n \"Importing t from I18n is deprecated. Use the default export instead.\",\n {\n id: \"discourse.i18n-t-import\",\n }\n );\n return I18n.default.t(...arguments);\n };\n});\n\ndefine(\"ember-addons/ember-computed-decorators\", [\n \"discourse/lib/decorators\",\n \"discourse/lib/deprecated\",\n], function (decorators, deprecated) {\n deprecated.default(\n \"ember-addons/ember-computed-decorators is deprecated. Use discourse/lib/decorators instead.\",\n { since: \"2.4\", dropFrom: \"3.0\" }\n );\n return decorators;\n});\n"],"mappings":"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"}