UNPKG

memory-manager-service

Version:

This service can be used to generate an internal private data that gets automatically disposed when it's not used anymore.

1 lines 18.8 kB
!function(e){var t={};function n(r){if(t[r])return t[r].exports;var s=t[r]={i:r,l:!1,exports:{}};return e[r].call(s.exports,s,s.exports,n),s.l=!0,s.exports}n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var s in e)n.d(r,s,function(t){return e[t]}.bind(null,s));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=2)}([function(e,t){!function(e){var t={};function n(r){if(t[r])return t[r].exports;var s=t[r]={i:r,l:!1,exports:{}};return e[r].call(s.exports,s,s.exports,n),s.l=!0,s.exports}n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var s in e)n.d(r,s,function(t){return e[t]}.bind(null,s));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=0)}([function(e,t,n){"use strict";n.r(t);class r extends Map{constructor(){super(),this.weak=new WeakMap}set(e,t){return this.weak.set(t,e),super.set(e,t)}get(e){return"string"==typeof e?super.get(e):this.weak.get(e)}delete(e){let t,n;return"string"==typeof e?(n=super.get(e),t=e):(n=e,t=this.weak.get(e)),this.weak.delete(n),super.delete(t)}has(e){return"string"==typeof e?super.has(e):this.weak.has(e)}}self.IndexMap=r,t.default=r}])},function(module,exports){!function(e){var t={};function n(r){if(t[r])return t[r].exports;var s=t[r]={i:r,l:!1,exports:{}};return e[r].call(s.exports,s,s.exports,n),s.l=!0,s.exports}n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var s in e)n.d(r,s,function(t){return e[t]}.bind(null,s));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=1)}([function(module,exports){!function(e){var t={};function n(r){if(t[r])return t[r].exports;var s=t[r]={i:r,l:!1,exports:{}};return e[r].call(s.exports,s,s.exports,n),s.l=!0,s.exports}n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var s in e)n.d(r,s,function(t){return e[t]}.bind(null,s));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=3)}([function(e,t,n){"use strict";n.d(t,"a",(function(){return i}));var r=n(1),s=n(2);const a=new WeakMap,o=new WeakMap;class i extends ExtendableEventTarget{constructor(e){super();const t=new s.a(this),n=new r.a(t),i=e=>{if(t.run(e),!t.running){const e=new Event("error");e.message="Unable to execute Worker code!",this.terminate(),this.dispatchEvent(e)}},l=e=>{const t=new Event("error");t.message=e,this.terminate(),this.dispatchEvent(t)};a.set(this,t),o.set(this,n);const c=new XMLHttpRequest;this.onmessage=null,this.onmessageerror=null,this.onerror=null,t.addEventListener("message",e=>{"function"==typeof this.onmessage&&this.onmessage(e)}),t.addEventListener("messageerror",e=>{"function"==typeof this.onmessageerror&&this.onmessageerror(e)}),this.addEventListener("error",e=>{"function"==typeof this.onerror&&this.onerror(e)}),e instanceof Blob?e.text().then(e=>i(e)).catch(e=>l(e)):"string"==typeof e&&(c.open("GET",e),c.onreadystatechange=()=>{c.readyState===XMLHttpRequest.DONE&&(200===c.status?i(c.responseText):l("Worker code not available!"))},c.send())}get running(){return Boolean(a.has(this)&&a.get(this).running)}postMessage(...e){if(o.has(this))return o.get(this).postMessage(...e)}terminate(){o.has(this)&&(o.get(this).clear(),o.delete(this)),a.has(this)&&(a.get(this).terminate(),a.delete(this))}}},function(e,t,n){"use strict";n.d(t,"a",(function(){return o}));const r=[];self.ArrayBuffer&&r.push(ArrayBuffer),self.MessagePort&&r.push(MessagePort),self.ImageBitmap&&r.push(ImageBitmap),self.OffscreenCanvas&&r.push(OffscreenCanvas);const s=new WeakMap,a=(e,t,n)=>(e&&"object"==typeof e&&t.indexOf(e)<0&&(n.indexOf(e)>=0?e=void 0:(n.push(e),e=Array.isArray(e)?((e,t,n)=>{const r=[];for(let s of e)s=a(s,t,n),void 0!==s&&r.push(s);return r})(e,t,n):((e,t,n)=>{try{e=Object.assign({},e);const r=Object.keys(e),s={};for(let o of r){const r=a(e[o],t,n);void 0!==r&&(s[o]=r)}return s}catch(e){}})(e,t,n))),e);class o{constructor(e){s.set(this,e)}postMessage(e,t){if(s.has(this)){const n=new Event("message"),o=s.get(this);n.data=((e,t)=>(t=Array.isArray(t)?t.filter(e=>{for(let t of r)if(e instanceof t)return!0;return!1}):[],a(e,t,[])))(e,t),setTimeout(()=>o.dispatchEvent(n))}}clear(){s.has(this)&&s.delete(this)}}},function(module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.d(__webpack_exports__,"a",(function(){return WorkerScope}));var _worker_js__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(0),_worker_channel_js__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(1);const eventMap=new WeakMap,channelMap=new WeakMap,originalAnimationFrame=e=>self.requestAnimationFrame(e);class WorkerScope extends ExtendableEventTarget{constructor(e){super();const t=new _worker_channel_js__WEBPACK_IMPORTED_MODULE_1__.a(e);this.running=!1,eventMap.set(this,{events:[],intervals:[],frames:[],timeouts:[]}),channelMap.set(this,t)}run(code){this.running=!0;const self={location:document.location,navigator:window.navigator,close:this.terminate,dump:console.log,onmessage:null,postMessage:(...e)=>channelMap.get(this).postMessage(...e),addEventListener:(...e)=>this.addEventListener(...e),removeEventListener:(...e)=>this.removeEventListener(...e),dispatchEvent:(...e)=>this.dispatchEvent(...e),ArrayBuffer:window.ArrayBuffer,MessagePort:window.MessagePort,ImageBitmap:window.ImageBitmap,OffscreenCanvas:window.OffscreenCanvas};let setTimeout=(...e)=>this.setTimeout(...e),setInterval=(...e)=>this.setInterval(...e),requestAnimationFrame=(...e)=>this.requestAnimationFrame(...e),clearTimeout=(...e)=>this.clearTimeout(...e),clearInterval=(...e)=>this.clearInterval(...e),cancelAnimationFrame=(...e)=>this.cancelAnimationFrame(...e),close=()=>this.terminate(),dump=(...e)=>console.log(),postMessage=self.postMessage,onmessage=null,location=self.location,navigator=self.navigator,Worker=_worker_js__WEBPACK_IMPORTED_MODULE_0__.a;this.addEventListener("message",e=>{const t=onmessage||self.onmessage;"function"==typeof t&&t(e)});try{eval(code)}catch(e){this.running=!1;const t=new Event("messageerror");t.message=e,this.dispatchEvent(t)}const workerStatusCheck=()=>{let e,t,n,r;eventMap.has(this)&&(e=eventMap.get(this).events.length>1||"function"==typeof onmessage||"function"==typeof self.onmessage,t=eventMap.get(this).timeouts.length>0,n=eventMap.get(this).intervals.length>0,r=eventMap.get(this).frames.length>0),this.running=e||t||n||r,this.running?originalAnimationFrame(workerStatusCheck):this.terminate()};originalAnimationFrame(workerStatusCheck)}setTimeout(...e){if(eventMap.has(this)){const t=self.setTimeout(...e);return eventMap.get(this).timeouts.push(t),self.setTimeout(()=>this.clearTimeout(t),(e[1]||0)+1),t}}setInterval(...e){if(eventMap.has(this)){const t=self.setInterval(...e);return eventMap.get(this).intervals.push(t),t}}requestAnimationFrame(...e){if(eventMap.has(this)){const t=self.requestAnimationFrame(...e);return eventMap.get(this).frames.push(t),self.requestAnimationFrame(()=>this.cancelAnimationFrame(t)),t}}clearTimeout(e){if(eventMap.has(this)){const t=eventMap.get(this).timeouts,n=t.indexOf(e);return n>=0&&t.splice(n,1),self.clearTimeout(e)}}clearInterval(e){if(eventMap.has(this)){const t=eventMap.get(this).intervals,n=t.indexOf(e);return n>=0&&t.splice(n,1),self.clearInterval(e)}}cancelAnimationFrame(e){if(eventMap.has(this)){const t=eventMap.get(this).frames,n=t.indexOf(e);return n>=0&&t.splice(n,1),self.cancelAnimationFrame(e)}}addEventListener(...e){if(eventMap.has(this))return eventMap.get(this).events.push(e),super.addEventListener(...e)}terminate(){if(eventMap.has(this)){const e=eventMap.get(this).events.slice(),t=eventMap.get(this).timeouts.slice(),n=eventMap.get(this).intervals.slice(),r=eventMap.get(this).frames.slice();let s,a;for(s=0,a=e.length;s<a;s++)this.removeEventListener(...e[s]);for(s=0,a=t.length;s<a;s++)this.clearTimeout(t[s]);for(s=0,a=n.length;s<a;s++)this.clearInterval(n[s]);for(s=0,a=r.length;s<a;s++)this.cancelAnimationFrame(r[s]);eventMap.delete(this)}channelMap.has(this)&&(channelMap.get(this).clear(),channelMap.delete(this))}}},function(e,t,n){"use strict";n.r(t);const r=new WeakMap;let s=!1;if(self.EventTarget)try{new EventTarget,s=!0}catch(e){}self.ExtendableEventTarget=s?self.EventTarget:class{constructor(){r.set(this,{})}addEventListener(e,t){const n=r.get(this);n.hasOwnProperty(e)||(n[e]=[]),n[e].indexOf(t)<0&&n[e].push(t)}removeEventListener(e,t){const n=r.get(this);if(n.hasOwnProperty(e)){const r=n[e].indexOf(t);r>=0&&n[e].splice(r,1)}}dispatchEvent(e){const t=e.type,n=r.get(this);if(n.hasOwnProperty(t)){const r=n[t].slice();for(let t of r)t(e)}}};var a=n(0);self.Worker||(self.Worker=a.a)}])},function(e,t,n){"use strict";n.r(t),n(0);class r extends Worker{constructor(e,t){super(e);let n=null;Object.defineProperty(this,"id",{value:t,enumerable:!0,writable:!1}),Object.defineProperty(this,"result",{enumerable:!0,get:()=>n}),this.postMessage({type:"shared-memory-id",value:t}),this.addEventListener("message",e=>{e&&e.data&&"thread-terminate"===e.data.type&&(e.stopImmediatePropagation(),n=e.data.value,this.terminate())})}terminate(){const e=new Event("terminate");return e.result=this.result,this.dispatchEvent(e),super.terminate()}}var s=r;let a=4;const o={},i=new Proxy(o,{set:(e,t,n)=>(g(t,n),!0)}),l=[],c=[],u=new WeakMap,f=new ArrayBuffer(256);for(let e=0;e<256;e++)f[e]=(e<16?"0":"")+e.toString(16).toUpperCase();const d=()=>{const e=4294967295*Math.random()|0,t=4294967295*Math.random()|0,n=4294967295*Math.random()|0,r=4294967295*Math.random()|0;return f[255&e]+f[e>>8&255]+f[e>>16&255]+f[e>>24&255]+"-"+f[255&t]+f[t>>8&255]+"-"+f[t>>16&15|64]+f[t>>24&255]+"-"+f[63&n|128]+f[n>>8&255]+"-"+f[n>>16&255]+f[n>>24&255]+f[255&r]+f[r>>8&255]+f[r>>16&255]+f[r>>24&255]},p=function(){let e={};const t=new Proxy(e,{set:(e,t,n)=>(e[t]=n,self.postMessage({type:"shared-memory-updated",property:t,value:n}),!0)});Object.defineProperty(self,"shared",{enumerable:!1,get:()=>t}),shared=self.shared,self.addEventListener("message",t=>{t.data&&t.data.type&&"shared-memory-update"===t.data.type&&(e[t.data.property]=t.data.value,t.stopImmediatePropagation()),t.data&&t.data.type&&"shared-memory-id"===t.data.type&&(Object.defineProperty(self,"threadId",{value:t.data.value,enumerable:!1,writable:!1}),threadId=self.threadId,t.stopImmediatePropagation()),t.data&&t.data.type&&"shared-memory-init"===t.data.type&&(Object.assign(e,t.data.value),t.stopImmediatePropagation(),start())})},h=e=>{const t=[{type:"thread-terminate",value:e}],n=[],r=["ArrayBuffer","MessagePort","ImageBitmap","OffscreenCanvas"],s=e=>{if((e=>{let t=!1;if(e)for(let n of r){const r=self[n];r&&(t=t||e instanceof r)}return t})(e))n.push(e);else if(e&&"object"==typeof e)for(let t in e){const n=e[t];s(n)}};s(e),n.length>0&&t.push(n),self.postMessage(...t)},g=(e,t)=>{o[e]=t;for(let n of c)n.postMessage({type:"shared-memory-update",property:e,value:t})},m=()=>{for(;l.length>0&&c.length<a;){const e=l.shift();y(...e)}},v=e=>{const t=(e=>{let t;if("function"==typeof e)if(u.has(e))t=u.get(e);else{const n="let threadId=null,shared=null;("+p.toString()+")();",r="let exit=self.exit=d=>{("+h.toString()+")(d)};",s="let start=()=>{("+e.toString()+")();start=undefined};",a=new Blob([n+r+s]);t=URL.createObjectURL(a),u.set(e,t)}return t})(e);if(t)try{const e=new s(t,d());return e.addEventListener("terminate",()=>(e=>{const t=c.indexOf(e);t>=0&&(c.splice(t,1),m())})(e)),e.addEventListener("message",e=>{e.data&&e.data.type&&"shared-memory-updated"===e.data.type&&(e.stopImmediatePropagation(),g(e.data.property,e.data.value))}),e.postMessage({type:"shared-memory-init",value:o}),c.push(e),e}catch{}},y=(e,t,n)=>{const r=v(e);r?t(r):(m(),n())};var M=new class{get shared(){return i}get count(){return c.length}get queue(){return l.length}get running(){return c.slice()}get limit(){return a}set limit(e){e=Number(e),!isNaN(e)&&e>=1&&(a=Math.round(e),m())}run(e){return new Promise((t,n)=>{c.length<a?y(e,t,n):l.push([e,t,n])})}async execute(e){const t=await this.run(e);return await new Promise(e=>{t.addEventListener("terminate",t=>e(t.result))})}purge(){const e=c.slice();l.length=0;for(let t of e)t.terminate()}generateUUID(){return d()}};self.Threads=M,t.default=M}])},function(e,t,n){"use strict";n.r(t);n(0),n(1);const r=new IndexMap,s=new Map,a=new Map,o=new Map,i=new Map;let l=null,c=[],u=3e4;Threads.run(()=>{const e=new Map;let t=0;setInterval(()=>n(),500),self.addEventListener("message",e=>{switch(e.data.name){case"create":r(e.data.index,e.data.keepAlive);break;case"update":s(e.data.index,e.data.content);break;case"dispose":a(e.data.index);break;case"time":t=e.data.value;break;case"flush":const o=t;t=0,n(),t=o}});const n=()=>{e.forEach((e,n)=>(e=>{const n=Date.now();return!e.keepAlive&&0===e.referenced.length&&n-e.timestamp>t})(e)&&a(n))},r=(t,n)=>{e.set(t,{timestamp:Date.now(),data:{},references:[],referenced:[],keepAlive:n})},s=(t,n)=>{const r=e.get(t);let s,a;if(r&&(r.timestamp=Date.now(),n)){Object.assign(r.data,n);const e=i(r.data),u=o(r.references,e);for(r.references=e,s=0,a=u.added.length;s<a;s++)l(u.added[s],t);for(s=0,a=u.removed.length;s<a;s++)c(u.removed[s],t)}},a=t=>{const n=e.get(t);if(n){for(let e of n.references)u(e,t);e.delete(t),self.postMessage({name:"delete",index:t})}},o=(e,t)=>{const n=[],r=t.slice(),s=e.slice();let a,o=s.length;for(a=0;a<o;a++){const e=s.pop(),t=r.indexOf(e);t<0?n.push(e):r.splice(t,1)}return{added:r,removed:n}},i=t=>{const n=[],r=Object.keys(t);for(let s of r){const r=t[s];if("id"!==s)if("string"==typeof r&&e.has(r))n.push(r);else if(Array.isArray(r))for(let t of r)"string"==typeof t&&e.has(t)&&n.push(t)}return n},l=(t,n)=>{const r=e.get(t);r&&r.referenced.push(n)},c=(t,n)=>{const r=e.get(t);if(r){const e=r.referenced.indexOf(n);e>=0&&r.referenced.splice(e,1)}},u=(t,n)=>{const r=e.get(t),s=Object.keys(r.data);let a=r.referenced.indexOf(n);a>=0&&r.referenced.splice(a,1);for(let e of s){const t=r.data[e];t===n?r.data[e]=null:Array.isArray(t)&&(a=t.indexOf(n),a>=0&&t.splice(a,1))}self.postMessage({name:"updated",index:t,data:r.data})}}).then(e=>{l=e,l.addEventListener("message",e=>{const t=e.data.index;switch(e.data.name){case"updated":s.set(t,e.data.content);break;case"delete":const n=o.get(t);for(let e of n)e(t);r.delete(t),s.delete(t),a.delete(t),o.delete(t),i.delete(t)}});for(let e of c)l.postMessage(e);c.length=0});const f=e=>Boolean(e)&&("object"==typeof e&&e.constructor!==Object||"function"==typeof e)&&!Array.isArray(e),d=e=>Boolean(e)&&"object"==typeof e&&r.has(e),p=e=>"string"==typeof e&&r.has(e),h=(e,t,n)=>{const s={get:(...t)=>((e,t,n)=>{let s=t[n];return isNaN(n)||(p(s)?s=r.get(s):/ComplexObject::/.test(s)&&(s=a.get(e).get(s.replace("ComplexObject::","")))),m({name:"update",index:e}),s})(e,...t),set:(...n)=>((e,t,n,s,o)=>(isNaN(s)||(d(o)?o=r.get(o):f(o)?(a.get(e).set(t+"::"+s,o),o="ComplexObject::"+t+"::"+s):null==o&&a.get(e).delete(t+"::"+s)),n[s]=o,g(e,t,n),!0))(e,t,...n)};for(let s=0,o=n.length;s<o;s++){let o=n[s];d(o)?o=r.get(o):f(o)&&(a.get(e).set(t+"::"+s,o),o="ComplexObject::"+t+"::"+s),n[s]=o}return a.get(e).set(t,new Proxy(n,s)),n},g=(e,t,n)=>{const r=i.get(e);m({name:"update",index:e,content:{[t]:n}});for(let s of r)s(e,t,n)},m=e=>{l?l.postMessage(e):c.push(e)};const v=new class{create(e,t,n){let l;if(t=t||{},r.has(e))l=r.get(e),this.update(e,t);else{l=t.id||Threads.generateUUID();const c=Object.assign({id:l},t);m({name:"create",index:l,keepAlive:Boolean(n)}),s.set(l,{}),r.set(l,e),a.set(l,new Map),o.set(l,[]),i.set(l,[]),this.update(e,c)}return l}get(e,t){const n="string"==typeof e?e:r.get(e),o=n&&s.get(n);if(o){let e=o[t];return p(e)&&"id"!==t?e=r.get(e):(e==="ComplexData::"+t||Array.isArray(e))&&(e=a.get(n).get(t)),m({name:"update",index:n}),e}}set(e,t,n){const o="string"==typeof e?e:r.get(e),i=o&&s.get(o);i&&(d(n)?n=r.get(n):f(n)?(a.get(o).set(t,n),n="ComplexData::"+t):Array.isArray(n)?n=h(o,t,n):null==n&&a.get(o).delete(t),i[t]=n,g(o,t,n))}update(e,t){const n="string"==typeof e?e:r.get(e);if(t&&n&&r.has(n)){const e=Object.keys(t);for(let r=0,s=e.length;r<s;r++){const s=e[r];this.set(n,s,t[s])}}}has(e){return r.has(e)}reference(e){if("string"==typeof e&&(e=r.get(e)),r.has(e))return m({name:"update",index:r.get(e)}),e}dispose(e){const t="string"==typeof e?e:r.get(e);t&&m({name:"dispose",index:t})}onDispose(e,t){const n="string"==typeof e?e:r.get(e),s=o.get(n);s&&"function"==typeof t&&s.push(t)}onUpdate(e,t){const n="string"==typeof e?e:r.get(e),s=i.get(n);s&&"function"==typeof t&&s.push(t)}flush(){m({name:"flush"})}get collectionTime(){return u}set collectionTime(e){e=Number(e),isNaN(e)||(u=Math.round(e),m({name:"time",value:u}))}};v.collectionTime=u;var y=v;self.Memory=y;t.default=y}]);