atriusmaps-node-sdk
Version:
This project provides an API to Atrius Personal Wayfinder maps within a Node environment. See the README.md for more information
2 lines (1 loc) • 1.26 kB
JavaScript
import o from"zousan";const n=(o,n)=>null==o.responseOrder?null==n.responseOrder?0:1:null==n.responseOrder?-1:o.responseOrder-n.responseOrder,r=(o,n)=>o.splice(n,1)[0],e=(o,n)=>{let e=0;do{e=o.indexOf(n,e),e>=0&&r(o,e)}while(e>=0);return o};function t(r={}){const t=r.log?r.log.sublog?r.log.sublog("bustle",{color:"pink"}):r.log:console,s={},l={};function u(n,r){o.soon((()=>{s[n]&&e(s[n],r)}))}function c(n,r){o.soon((()=>{l[n]&&e(l[n],r)}))}function i(n,e){return r.showEvents&&("function"==typeof r.showEvents?r.showEvents(n,e)&&t.info("send with",n," and ",e):t.info("send with",n," and ",e)),new o((u=>o.soon(((n,e,u)=>()=>{const c=s[n],i=l[n],f=[];if(c)for(const n of c)try{f.push(n(e))}catch(n){r.reportAllErrors&&t.error(n),r.rejectOnError?f.push(o.reject(n)):f.push(n)}const h=o.all(f);if(i)for(const o of i)try{o(e,h)}catch(o){r.reportAllErrors&&t.error(o)}u(h)})(n,e,u))))}return{get:(n,r)=>i(n,r).then((r=>1!==r.length?o.reject(`${n} event did not return a single result, but ${r.length} results.`):r[0])),getFirst:(o,r)=>i(o,r).then((o=>o.length>=1?o.sort(n)[0]:void 0)),moff:c,monitor:function(o,n){return l[o]||(l[o]=[]),l[o].push(n),()=>c(o,n)},off:u,on:function(o,n){return s[o]||(s[o]=[]),s[o].push(n),()=>u(o,n)},send:i}}export{t as create};