Build 533169stable
Module 318093
3,033 characters · in no known chunkDependencies
Source Raw
function(e,t,n){"use strict";n.d(t,{f:()=>u});var r=n(284009),i=n.n(r),s=n(626584),a=n(936674),o=n(354382);let l=new s.A("DispatcherWorkScheduler");class u{_flushTimeoutHandler=null;_flushIdleHandler=null;_nextDispatchTimeout=o.Z4;_workCallbackFn=null;_consecutiveFlushesBeforeQueueEmpty=0;_isBackgrounded=!1;_enableRequestIdleCallback=!0;_criticalWorkScheduled=!1;telemetry=new a.Kw;_logger=l;_trackAppBackgrounded(e){this._isBackgrounded===e||(this._isBackgrounded=e,this._isBackgrounded&&this.hasWorkScheduled&&(this.telemetry.track(a.KQ.SKIP_IDLE_CALLBACK_DUE_TO_BACKGROUNDED),this._processWorkCallback()))}_queueIdleCallback(){throw Error("Not implemented")}_clearIdleCallback(){throw Error("Not implemented")}get _hasExceededMaxConsecutiveFlushes(){return this._consecutiveFlushesBeforeQueueEmpty>=2}_processWorkCallback(e){if(null==this._workCallbackFn)return;if(this._hasExceededMaxConsecutiveFlushes){l.log("Unable to fully flush work queue after max retries, skipping future deadline."),this._workCallbackFn(),this.clearWorkTimeout(),this.telemetry.measure(a.Wg.COUNT_FLUSH_BEFORE_QUEUE_EMPTY,this._consecutiveFlushesBeforeQueueEmpty),this.telemetry.track(a.KQ.EXCEEDED_MAX_CONSECUTIVE_FLUSHES),this._consecutiveFlushesBeforeQueueEmpty=0,this._nextDispatchTimeout=o.ct;return}let t=performance.now(),n=this._workCallbackFn(e),r=performance.now();this.clearWorkTimeout(),r-t>o.zO?this._nextDispatchTimeout=o.ct:this._nextDispatchTimeout=o.Z4,n?(this._consecutiveFlushesBeforeQueueEmpty>0&&this.telemetry.measure(a.Wg.COUNT_FLUSH_BEFORE_QUEUE_EMPTY,parseInt(`${this._consecutiveFlushesBeforeQueueEmpty}`)),this._consecutiveFlushesBeforeQueueEmpty=0,this._criticalWorkScheduled=!1):this._consecutiveFlushesBeforeQueueEmpty+=1}markCriticalWorkScheduled(){this._criticalWorkScheduled=!0,null!=this._flushIdleHandler&&(this._clearIdleCallback(),this._processWorkCallback())}toggleRequestIdleCallback(e){this._enableRequestIdleCallback=e,!e&&this.hasWorkScheduled&&(this._clearIdleCallback(),this._processWorkCallback())}get isBackgrounded(){return this._isBackgrounded}get hasWorkScheduled(){return null!=this._flushTimeoutHandler||null!=this._flushIdleHandler}get isRequestIdleCallbackEnabled(){return this._enableRequestIdleCallback}clearWorkTimeout(){null!=this._flushTimeoutHandler&&(clearTimeout(this._flushTimeoutHandler),this._flushTimeoutHandler=null),this._clearIdleCallback(),this._nextDispatchTimeout=o.Z4,this._workCallbackFn=null}requestWorkTimeout(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(this._workCallbackFn=e,!this.hasWorkScheduled){if(this.telemetry.time(a.YE.TIME_TO_QUEUE_EMPTY),this._nextDispatchTimeout===o.ct&&this.telemetry.track(a.KQ.LONGER_DISPATCH),t)return void this._queueIdleCallback();this._flushTimeoutHandler=setTimeout(()=>{if(i()(null!=this._workCallbackFn,"Work callback should be set"),this._isBackgrounded)return this.telemetry.track(a.KQ.SKIP_IDLE_CALLBACK_DUE_TO_BACKGROUNDED),this._processWorkCallback();this._queueIdleCallback()},this._nextDispatchTimeout)}}}}