@arcgis/core
Version:
ArcGIS Maps SDK for JavaScript: A complete 2D and 3D mapping and data visualization API
1 lines • 9.3 kB
JavaScript
"use strict";(self.webpackChunkRemoteClient=self.webpackChunkRemoteClient||[]).push([[8010],{563:(e,t,s)=>{s.d(t,{QueueProcessor:()=>u});var i=s(97768),r=s(74887),n=s(9775),h=s(32587),o=s(11932),l=s(44794);class a{constructor(e,t){this.item=e,this.controller=t,this.promise=null}}class u{constructor(e){this._schedule=null,this._deferreds=new h.A,this._controllers=new h.A,this._processingItems=new h.A,this._pausedSignal=(0,l.v)(!1),this.concurrency=1,e.concurrency&&(this.concurrency=e.concurrency),this._queue=new n.A(e.peeker),this.process=e.process}destroy(){this.clear(),this._schedule=(0,i.xt)(this._schedule)}get updating(){return this.running}get length(){return this._processingItems.size+this._queue.length}get running(){return!this._pausedSignal.value&&this._queue.length>0&&this._processingItems.size<this.concurrency}abort(e){const t=this._controllers.get(e);t&&t.abort()}clear(){this._queue.clear();const e=[];this._controllers.forEach((t=>e.push(t))),this._controllers.clear(),e.forEach((e=>e.abort())),this._processingItems.clear(),this._cancelNext()}forEach(e){this._deferreds.forEach(((t,s)=>e(s)))}get(e){const t=this._deferreds.get(e);return t?t.promise:void 0}isOngoing(e){return this._processingItems.has(e)}has(e){return this._deferreds.has(e)}pause(){this._pausedSignal.value||(this._pausedSignal.value=!0,this._cancelNext())}push(e,t){const s=this.get(e);if(s)return s;const i=new AbortController;let n=null;t&&(n=(0,r.u7)(t,(()=>i.abort())));const h=()=>{o.remove(),null!=n&&n.remove(),this._removeItem(e),this._queue.remove(e),this._scheduleNext()},o=(0,r.NY)(i.signal,(()=>{const t=this._processingItems.get(e);t&&t.controller.abort(),h(),l.reject((0,r.NK)())})),l=(0,r.Tw)();return this._deferreds.set(e,l),this._controllers.set(e,i),l.promise.then(h,h),this._queue.push(e),this._scheduleNext(),l.promise}last(){return this._queue.last()}lastPromise(){const e=this.last();return e?this.get(e):null}peek(){return this._queue.peek()}popLast(){const e=this._queue.popLast();return e&&(this._deferreds.get(e)?.reject((0,r.NK)()),this._removeItem(e)),e}reset(){const e=Array.from(this._processingItems.values());this._processingItems.clear();for(const t of e)this._queue.push(t.item),t.controller.abort();this._scheduleNext()}resume(){this._pausedSignal.value&&(this._pausedSignal.value=!1,this._scheduleNext())}takeAll(){const e=[];for(;this._queue.length;)e.push(this._queue.pop());return this.clear(),e}_removeItem(e){this._deferreds.delete(e),this._controllers.delete(e),this._processingItems.delete(e)}_scheduleNext(){this._pausedSignal.value||this._schedule||(this._schedule=(0,o._)((()=>{this._schedule=null,this._next()})))}_next(){for(;this._queue.length>0&&this._processingItems.size<this.concurrency;)this._process(this._queue.pop())}_cancelNext(){this._schedule&&(this._schedule.remove(),this._schedule=null)}_processResult(e,t){this._canProcessFulfillment(e)&&(this._scheduleNext(),this._deferreds.get(e.item).resolve(t))}_processError(e,t){this._canProcessFulfillment(e)&&(this._scheduleNext(),this._deferreds.get(e.item).reject(t))}_canProcessFulfillment(e){return!!this._deferreds.get(e.item)&&this._processingItems.get(e.item)===e}_process(e){if(null==e)return;let t;const s=new AbortController,i=new a(e,s);this._processingItems.set(e,i);try{t=this.process(e,s.signal)}catch(e){this._processError(i,e)}(0,r.$X)(t)?(i.promise=t,t.then((e=>this._processResult(i,e)),(e=>this._processError(i,e)))):this._processResult(i,t)}}},8010:(e,t,s)=>{s.r(t),s.d(t,{createBatchExecutor:()=>h}),s(44208);var i=s(91869),r=s(74887),n=s(563);function h(e,t,s,i){return new l(e,t,s,i)}class o{constructor(e,t,s){this._executor=e,this._data=t,this._impl=s,this._closed=!1,this._resolver=(0,r.Tw)(),this._impl.open(this)}assertOpen(){if(this._closed)throw new Error("Batch closed.")}get data(){return this.assertOpen(),this._data}get results(){return this._resolver.promise}send(){try{this.assertOpen(),this._closed=!0,this._executor.resume(this),this._impl.close(this),(0,r.hn)(this._resolver,this._impl.execute(this._data))}catch(e){this._resolver.reject(e)}}}class l{constructor(e,t,s,i){if(this._runJob=t,this._maxRunning=s,this._abortSignal=i,this._jobIdSeq=0,this._running=new Set,this._blocked=new Set,this._openBatches=new Map,this._state="ready",this._runResolver=null,s<1)throw new Error(`_maxRunning=${s} but cannot be < 1`);this._todo=e[Symbol.iterator](),this._queue=new n.QueueProcessor({concurrency:1,process:async e=>{if("start"===e.type){const{id:t,args:s}=e,i=(0,r.Tw)(),n=(0,r.Tw)(),h={id:t,interrupt:i,finished:n.promise};return(0,r.hn)(n,this._runJob(s,{id:t,yieldFor:e=>this.yieldFor(h,e)}).then((()=>{this._blocked.has(t)&&this._fail(new Error(`job ${t} completed before resuming`)),this._running.delete(t)||this._fail(new Error(`job ${t} not running?`))}))),await Promise.race([i.promise,h.finished]),void this._tryQueue()}if("continue"===e.type)return e.job.interrupt=(0,r.Tw)(),"fulfilled"===e.data.status?e.continuation.resolve(e.data.value):e.continuation.reject(e.data.reason),await Promise.race([e.job.interrupt.promise,e.job.finished]),void this._tryQueue()}})}openBatch(e,t){return new o(this,e,t)}_fail(e,t=!1){if(this._runResolver?.reject(e),this._state="stopped",!t)throw e}_schedule(e){this._queue.push(e).catch((e=>this._fail(e,!0)))}_tryQueue(){if("running"===this._state)if(this._abortSignal?.aborted)this._fail((0,r.NK)(),!0);else{if(this._running.size<this._maxRunning){const e=this._todo.next();if(!e.done){const t=this._jobIdSeq++;return this._running.add(t),void this._schedule({type:"start",id:t,args:e.value})}}if(0===this._running.size)return this._runResolver?.resolve(),this._runResolver=null,void(this._state="stopped");if(this._blocked.size===this._running.size){let e=null,t=-1/0;for(const[s,i]of this._openBatches)i.size>t&&(e=s,t=i.size);return null==e&&this._fail(new Error("deadlock")),void e.send()}}}resume(e){const t=this._openBatches.get(e);if(this._openBatches.delete(e),null!=t)for(const e of t)this._blocked.delete(e)||this._fail(new Error(`job ${e} not suspended`))}async yieldFor(e,t){t.assertOpen(),this._running.has(e.id)||this._fail(new Error(`job ${e.id} not running`)),this._blocked.has(e.id)&&this._fail(new Error(`job ${e.id} already suspended`)),this._blocked.add(e.id),(0,i.tE)(this._openBatches,t,(()=>new Set)).add(e.id),null==e.interrupt&&this._fail(new Error(`job ${e.id} hasn't resumed yet`)),e.interrupt.resolve(),e.interrupt=null;const s=(0,r.Tw)();let n;try{n={status:"fulfilled",value:await t.results}}catch(e){n={status:"rejected",reason:e}}return this._schedule({type:"continue",continuation:s,data:n,job:e}),s.promise}run(){"ready"!==this._state&&this._fail(new Error(`executor not ready to start. state=${this._state}`));const e=(0,r.Tw)();return this._state="running",this._runResolver=e,this._tryQueue(),e.promise}}},9775:(e,t,s)=>{s.d(t,{A:()=>n});var i=s(62788),r=s(95488);class n{constructor(e=e=>e.values().next().value){this._peeker=e,this._observable=new r.I,this._items=new Set}get length(){return(0,i.gc)(this._observable),this._items.size}clear(){0!==this.length&&(this._items.clear(),this._observable.notify())}last(){if(0===this.length)return;let e;for(e of this._items);return e}peek(){if(0!==this.length)return this._peeker(this._items)}push(e){this.contains(e)||(this._items.add(e),this._observable.notify())}contains(e){return(0,i.gc)(this._observable),this._items.has(e)}pop(){if(0===this.length)return;const e=this.peek();return this._items.delete(e),this._observable.notify(),e}popLast(){if(0===this.length)return;const e=this.last();return this._items.delete(e),this._observable.notify(),e}remove(e){this.contains(e)&&(this._items.delete(e),this._observable.notify())}filter(e){const t=this.length;return this._items.forEach((t=>{e(t)||this._items.delete(t)})),t!==this._items.size&&this._observable.notify(),this}*[Symbol.iterator](){(0,i.gc)(this._observable),yield*this._items}}},32587:(e,t,s)=>{s.d(t,{A:()=>n});var i=s(62788),r=s(95488);class n{constructor(e){this._observable=new r.I,this._map=new Map(e)}get size(){return(0,i.gc)(this._observable),this._map.size}clear(){this._map.size>0&&(this._map.clear(),this._observable.notify())}delete(e){const t=this._map.delete(e);return t&&this._observable.notify(),t}entries(){return(0,i.gc)(this._observable),this._map.entries()}forEach(e,t){(0,i.gc)(this._observable),this._map.forEach(((s,i)=>e.call(t,s,i,this)),t)}get(e){return(0,i.gc)(this._observable),this._map.get(e)}has(e){return(0,i.gc)(this._observable),this._map.has(e)}keys(){return(0,i.gc)(this._observable),this._map.keys()}set(e,t){return this._map.set(e,t),this._observable.notify(),this}values(){return(0,i.gc)(this._observable),this._map.values()}[Symbol.iterator](){return(0,i.gc)(this._observable),this._map[Symbol.iterator]()}[Symbol.dispose](){this._observable.destroy()}get[Symbol.toStringTag](){return this._map[Symbol.toStringTag]}}},44794:(e,t,s)=>{s.d(t,{v:()=>o});var i=s(4718),r=s(62788),n=s(95488);class h{constructor(e,t){this._observable=new n.I,this._value=e,this._equalityFunction=t}get value(){return(0,r.gc)(this._observable),this._value}set value(e){this._equalityFunction(e,this._value)||(this._value=e,this._observable.notify())}mutate(e){e(this._value),this._observable.notify()}}function o(e,t=i.gh){return new h(e,t)}}}]);