UNPKG

wowok

Version:

Wowok Blockchain TypeScript API

1 lines 5.72 kB
export class DataLoader{constructor(a,b){if(typeof a!=='function')throw new TypeError('DataLoader\x20must\x20be\x20constructed\x20with\x20a\x20function\x20which\x20accepts\x20'+('Array<key>\x20and\x20returns\x20Promise<Array<value>>,\x20but\x20got:\x20'+a+'.'));this['_batchLoadFn']=a,this['_maxBatchSize']=getValidMaxBatchSize(b),this['_batchScheduleFn']=getValidBatchScheduleFn(b),this['_cacheKeyFn']=getValidCacheKeyFn(b),this['_cacheMap']=getValidCacheMap(b),this['_batch']=null,this['name']=getValidName(b);}['_batchLoadFn'];['_maxBatchSize'];['_batchScheduleFn'];['_cacheKeyFn'];['_cacheMap'];['_batch'];['load'](a){if(a===null||a===undefined)throw new TypeError('The\x20loader.load()\x20function\x20must\x20be\x20called\x20with\x20a\x20value,\x20but\x20got:\x20'+String(a)+'.');const b=getCurrentBatch(this),c=this['_cacheMap'];let d;if(c){d=this['_cacheKeyFn'](a);const f=c['get'](d);if(f){const g=b['cacheHits']||(b['cacheHits']=[]);return new Promise(h=>{g['push'](()=>{h(f);});});}}b['keys']['push'](a);const e=new Promise((h,i)=>{b['callbacks']['push']({'resolve':h,'reject':i});});return c&&c['set'](d,e),e;}['loadMany'](a){if(!isArrayLike(a))throw new TypeError('The\x20loader.loadMany()\x20function\x20must\x20be\x20called\x20with\x20Array<key>,\x20but\x20got:\x20'+a+'.');const b=[];for(let c=0x0;c<a['length'];c++){b['push'](this['load'](a[c])['catch'](d=>d));}return Promise['all'](b);}['clear'](a){const b=this['_cacheMap'];if(b){const c=this['_cacheKeyFn'](a);b['delete'](c);}return this;}['clearAll'](){const a=this['_cacheMap'];return a&&a['clear'](),this;}['prime'](a,b){const c=this['_cacheMap'];if(c){const d=this['_cacheKeyFn'](a);if(c['get'](d)===undefined){let e;b instanceof Error?(e=Promise['reject'](b),e['catch'](()=>{})):e=Promise['resolve'](b),c['set'](d,e);}}return this;}['name'];}const enqueuePostPromiseJob=typeof process==='object'&&typeof process['nextTick']==='function'?function(a){!resolvedPromise&&(resolvedPromise=Promise['resolve']()),resolvedPromise['then'](()=>{process['nextTick'](a);});}:typeof setImmediate==='function'?function(a){setImmediate(a);}:function(a){setTimeout(a);};let resolvedPromise;function getCurrentBatch(a){const b=a['_batch'];if(b!==null&&!b['hasDispatched']&&b['keys']['length']<a['_maxBatchSize'])return b;const c={'hasDispatched':![],'keys':[],'callbacks':[]};return a['_batch']=c,a['_batchScheduleFn'](()=>{dispatchBatch(a,c);}),c;}function dispatchBatch(a,b){b['hasDispatched']=!![];if(b['keys']['length']===0x0){resolveCacheHits(b);return;}let c;try{c=a['_batchLoadFn'](b['keys']);}catch(d){return failedDispatch(a,b,new TypeError('DataLoader\x20must\x20be\x20constructed\x20with\x20a\x20function\x20which\x20accepts\x20'+'Array<key>\x20and\x20returns\x20Promise<Array<value>>,\x20but\x20the\x20function\x20'+('errored\x20synchronously:\x20'+String(d)+'.')));}if(!c||typeof c['then']!=='function')return failedDispatch(a,b,new TypeError('DataLoader\x20must\x20be\x20constructed\x20with\x20a\x20function\x20which\x20accepts\x20'+'Array<key>\x20and\x20returns\x20Promise<Array<value>>,\x20but\x20the\x20function\x20did\x20'+('not\x20return\x20a\x20Promise:\x20'+String(c)+'.')));Promise['resolve'](c)['then'](f=>{if(!isArrayLike(f))throw new TypeError('DataLoader\x20must\x20be\x20constructed\x20with\x20a\x20function\x20which\x20accepts\x20'+'Array<key>\x20and\x20returns\x20Promise<Array<value>>,\x20but\x20the\x20function\x20did\x20'+('not\x20return\x20a\x20Promise\x20of\x20an\x20Array:\x20'+String(f)+'.'));if(f['length']!==b['keys']['length'])throw new TypeError('DataLoader\x20must\x20be\x20constructed\x20with\x20a\x20function\x20which\x20accepts\x20'+'Array<key>\x20and\x20returns\x20Promise<Array<value>>,\x20but\x20the\x20function\x20did\x20'+'not\x20return\x20a\x20Promise\x20of\x20an\x20Array\x20of\x20the\x20same\x20length\x20as\x20the\x20Array\x20'+'of\x20keys.'+('\x0a\x0aKeys:\x0a'+String(b['keys']))+('\x0a\x0aValues:\x0a'+String(f)));resolveCacheHits(b);for(let g=0x0;g<b['callbacks']['length'];g++){const h=f[g];h instanceof Error?b['callbacks'][g]['reject'](h):b['callbacks'][g]['resolve'](h);}})['catch'](f=>{failedDispatch(a,b,f);});}function failedDispatch(a,b,c){resolveCacheHits(b);for(let d=0x0;d<b['keys']['length'];d++){a['clear'](b['keys'][d]),b['callbacks'][d]['reject'](c);}}function resolveCacheHits(a){if(a['cacheHits'])for(let b=0x0;b<a['cacheHits']['length'];b++){a['cacheHits'][b]();}}function getValidMaxBatchSize(a){const b=!a||a['batch']!==![];if(!b)return 0x1;const c=a&&a['maxBatchSize'];if(c===undefined)return Infinity;if(typeof c!=='number'||c<0x1)throw new TypeError('maxBatchSize\x20must\x20be\x20a\x20positive\x20number:\x20'+c);return c;}function getValidBatchScheduleFn(a){const b=a&&a['batchScheduleFn'];if(b===undefined)return enqueuePostPromiseJob;if(typeof b!=='function')throw new TypeError('batchScheduleFn\x20must\x20be\x20a\x20function:\x20'+b);return b;}function getValidCacheKeyFn(a){const b=a&&a['cacheKeyFn'];if(b===undefined)return c=>c;if(typeof b!=='function')throw new TypeError('cacheKeyFn\x20must\x20be\x20a\x20function:\x20'+b);return b;}function getValidCacheMap(a){const b=!a||a['cache']!==![];if(!b)return null;const c=a&&a['cacheMap'];if(c===undefined)return new Map();if(c!==null){const d=['get','set','delete','clear'],e=d['filter'](f=>c&&typeof c[f]!=='function');if(e['length']!==0x0)throw new TypeError('Custom\x20cacheMap\x20missing\x20methods:\x20'+e['join'](',\x20'));}return c;}function getValidName(a){if(a&&a['name'])return a['name'];return null;}function isArrayLike(a){return typeof a==='object'&&a!==null&&'length'in a&&typeof a['length']==='number'&&(a['length']===0x0||a['length']>0x0&&Object['prototype']['hasOwnProperty']['call'](a,a['length']-0x1));}