@hailer/app-sdk 1.0.1-beta6 → 1.0.1-beta7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/app-sdk.js CHANGED
@@ -1,2 +1,2 @@
1
- var z=Object.create;var M=Object.defineProperty;var G=Object.getOwnPropertyDescriptor;var Q=Object.getOwnPropertyNames;var X=Object.getPrototypeOf,Y=Object.prototype.hasOwnProperty;var H=(a,t)=>()=>(t||a((t={exports:{}}).exports,t),t.exports);var Z=(a,t,e,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of Q(t))!Y.call(a,i)&&i!==e&&M(a,i,{get:()=>t[i],enumerable:!(r=G(t,i))||r.enumerable});return a};var $=(a,t,e)=>(e=a!=null?z(X(a)):{},Z(t||!a||!a.__esModule?M(e,"default",{value:a,enumerable:!0}):e,a));var o=(a,t,e)=>new Promise((r,i)=>{var s=u=>{try{l(e.next(u))}catch(h){i(h)}},n=u=>{try{l(e.throw(u))}catch(h){i(h)}},l=u=>u.done?r(u.value):Promise.resolve(u.value).then(s,n);l((e=e.apply(a,t)).next())});var B=H(f=>{"use strict";var tt=f&&f.__awaiter||function(a,t,e,r){function i(s){return s instanceof e?s:new e(function(n){n(s)})}return new(e||(e=Promise))(function(s,n){function l(p){try{h(r.next(p))}catch(T){n(T)}}function u(p){try{h(r.throw(p))}catch(T){n(T)}}function h(p){p.done?s(p.value):i(p.value).then(l,u)}h((r=r.apply(a,t||[])).next())})};Object.defineProperty(f,"__esModule",{value:!0});f.Client=void 0;var E=class{constructor(t,e){this.write=t,this.requests={},this.id=0,this.mtu=65535,e&&e.mtu&&(this.mtu=e.mtu)}destroy(){this.requests=null,this.write=null}messageReceived(t){let e=!!(t.err||t.ack||t.fin),r=t.ack||t.err||t.sig||t.fin,i=this.requests[r],s;if(i&&typeof i.cb=="function"){let n;t.fin?i.cb.call(i.context,null,null,!0):i.canceled?console.log("This request is canceled. Not calling the callback."):(n=t.err?t.data:null,s=i.cb.call(i.context,n,t.data,e))}return e&&delete this.requests[r],s}requestAsync(t,e){return tt(this,void 0,void 0,function*(){return new Promise((r,i)=>{this.request(t,e,(s,n)=>{if(s)return i(n);r(n)})})})}request(t,e,r){this.id++;let i={op:t};return Array.isArray(e)&&(i.args=e),r&&(i.id=this.id,this.requests[i.id]={cb:r,context:{id:i.id,cancel:()=>{setTimeout((s=>()=>{this.requests[s]&&console.log("rpc-client.js: timeout, the request has not been removed while it was canceled",s,this.requests[s])})(i.id),1500),this.requests[i.id].canceled=!0,this.write({end:i.id})},emit:s=>this.write({sig:i.id,data:s})}}),this.write(i),i.id||null}send(t,e){this.write({push:t,data:e})}end(t){this.write({end:t})}};f.Client=E});var N=H(m=>{"use strict";Object.defineProperty(m,"__esModule",{value:!0});m.Server=void 0;var g=console.log,F=class{constructor(t){this.modules={},this.methods={},this.requests={},this.clientIdCounter=0,this.requestId=0,this.invokeId=0,t&&this.insertMethods(t)}destroy(){for(let t in this.requests){for(let e in this.requests[t])typeof this.requests[t][e].end=="function"&&this.requests[t][e].end();delete this.requests[t]}}insertMethods(t){let e="";this.addMethods(e,t)}addMethods(t,e){let r=t?t+".":"";for(let i in e)if(i!=="_"){if(i.substring(0,1)!=="_"&&e["_"+i])if(typeof e[i]=="function"){let s=e["_"+i].name||i;e["_"+i].fullname=r+s;try{this.modules[r+s]=e["_"+i],this.methods[r+s]=e[i]}catch(n){console.log("Kaboom! ",n)}}else typeof e[i]=="object"&&this.addMethods(r+i,e[i])}}listMethods(t,e,r){let i={};function s(l,u){let h={};for(let p in l)u[p]||(h[p]=l[p]);return h}let n={fullname:!0};for(let l in this.modules)i[l]=s(this.modules[l],n);r(null,i)}clientOffline(t){for(let e in this.requests[t])typeof this.requests[t][e].end=="function"&&this.requests[t][e].end(),delete this.requests[t][e]}closeAll(){for(let t in this.requests)for(let e in this.requests[t])typeof this.requests[t][e].end=="function"&&this.requests[t][e].end(),delete this.requests[t][e]}parse(t,e,r,i){if(typeof i=="number")try{if(t.push){this.requests[i]&&this.requests[i][t.push]&&this.invokeRaw(t,e,this.requests[i][t.push].context,i);return}if(t.sig){this.requests[i]&&this.requests[i][t.sig]&&this.invokeRaw(t,e,this.requests[i][t.sig].context,i);return}if(t.end){let s=t.end;if(this.requests[i]&&this.requests[i][s]){typeof this.requests[i][s].end=="function"&&this.requests[i][s].end(),e({fin:s}),delete this.requests[i][s];return}if(!this.requests[i][s])return;typeof this.requests[i][s].end=="function"&&this.requests[s].end();return}if(t.op==="methods"){this.listMethods(t.args,r,function(s,n){e({ack:t.id,data:n})});return}if(typeof this.methods[t.op]>"u"){e({err:t.id,data:{code:300,msg:"No method found: "+t.op}});return}this.invokeRaw(t,e,r,i)}catch(s){g("Dynamic RPC failed to execute ",t.op,s,s.stack);try{console.log("RPC caught error",s.stack),e({ack:t.id,err:t.id,data:"caught error in "+t.op+": "+s.toString(),debug:s.stack})}catch(n){e({err:t.id,data:"rpc",errmsg:n.toString()})}}}emit(t,e){for(let r in this.requests)if(this.requests[r]){for(let i in this.requests[r])if(this.requests[r][i].op===t){let{send:s}=this.requests[r][i];s({sig:i,data:e})}}}invokeRaw(t,e,r,i){if(++this.requestId,!this.requests[i])return console.log("Session not opened for client. Use Server.open() first");if(t.push){let s=this.requests[i][t.push];if(t.data===null){console.log("msg.data is null:",t);return}s.data(t.data);return}if(t.sig){let s=this.requests[i][t.sig];try{this.methods[s.op].call(this.requests[i][t.sig],t.data,{send:n=>{typeof s.end=="function"&&s.end(),this.requests[i][t.sig]&&delete this.requests[i][t.sig],e({ack:t.sig,data:n})},emit:n=>(this.requests[i][t.sig]||typeof s.end=="function"&&s.end(),e({sig:t.sig,data:n})),error:n=>{typeof s.end=="function"&&s.end(),delete this.requests[i][t.sig],e({err:t.sig,data:n})},close:n=>{typeof s.end=="function"&&s.end(),delete this.requests[i][t.sig],e({fin:t.sig})}},r)}catch(n){console.log("Calling the method in RPC failed:",t.op,t.args,n.stack),delete this.requests[i][t.sig],e({err:t.sig,data:{msg:"rpc failed during execution of "+t.op,code:578}})}return}if(typeof t.id>"u"){let s={};this.methods[t.op].call(s,{args:t.args},{send:()=>{g("Trying to send response to event ("+t.op+"). Dropping.")},emit:()=>{g("Trying to emit response to event ("+t.op+"). Dropping.")},error:()=>{g("Trying to respond with error to event ("+t.op+"). Dropping.")},close:()=>{g("Trying to close event ("+t.op+"). Dropping.")}},r)}else{let s={id:t.id,op:t.op,args:t.args,context:r,end:null,send:e};this.requests[i]||(this.requests[i]={}),this.requests[i][t.id]&&(console.log("Serious warning. There is already a request by that id, we'll kill it off! This session is likely not clean. clientId:",i,"msg",t,"stack trace:",new Error().stack),typeof this.requests[i][t.id].end=="function"&&this.requests[i][t.id].end(),delete this.requests[i][t.id],console.log("Removed old request by same id from same client...")),this.requests[i][t.id]=s;try{this.methods[t.op].call(s,{args:t.args},{send:n=>{typeof s.end=="function"&&s.end(),this.requests[i][t.id]&&delete this.requests[i][t.id],e({ack:t.id,data:n})},emit:n=>(this.requests[i][t.id]||typeof s.end=="function"&&s.end(),e({sig:t.id,data:n})),error:n=>{typeof s.end=="function"&&s.end(),delete this.requests[i][t.id],e({err:t.id,data:n})},close:n=>{typeof s.end=="function"&&s.end(),delete this.requests[i][t.id],e({fin:t.id})}},r)}catch(n){console.log("Calling the method in RPC failed:",t.op,t.args,n.stack),delete this.requests[i][t.id],e({err:t.id,data:{msg:"rpc failed during execution of "+t.op,code:578}})}}}close(t){for(let e in this.requests[t])typeof this.requests[t][e].end=="function"&&this.requests[t][e].end(),delete this.requests[t][e];delete this.requests[t]}open(){let t=++this.clientIdCounter;return this.requests[t]={},t}};m.Server=F});var W=H(d=>{"use strict";var et=d&&d.__createBinding||(Object.create?function(a,t,e,r){r===void 0&&(r=e),Object.defineProperty(a,r,{enumerable:!0,get:function(){return t[e]}})}:function(a,t,e,r){r===void 0&&(r=e),a[r]=t[e]}),I=d&&d.__exportStar||function(a,t){for(var e in a)e!=="default"&&!Object.prototype.hasOwnProperty.call(t,e)&&et(t,a,e)};Object.defineProperty(d,"__esModule",{value:!0});I(B(),d);I(N(),d)});var V=$(W(),1);var c=class extends Error{constructor(e){super();this.code=e.code,this.msg=e.msg,this.debug=e.debug,Object.setPrototypeOf(this,c.prototype)}};var b=class{constructor(t){this.client=t}get(t){return o(this,null,function*(){try{return yield this.client.requestAsync("v1.user.get",[t])}catch(e){throw new c(e)}})}current(){return o(this,null,function*(){try{return yield this.client.requestAsync("v1.user.current",[])}catch(t){throw new c(t)}})}list(){return o(this,null,function*(){try{return yield this.client.requestAsync("v1.user.list",[])}catch(t){throw new c(t)}})}};var w=class{constructor(t){this.client=t}list(t,e){return o(this,null,function*(){try{return yield this.client.requestAsync("v1.activity.kanban.list",[t,...e?[e]:[]])}catch(r){throw new c(r)}})}load(t){return o(this,null,function*(){try{return yield this.client.requestAsync("v1.activity.kanban.load",[t])}catch(e){throw new c(e)}})}updatePriority(t,e){return o(this,null,function*(){try{return yield this.client.requestAsync("v1.activity.kanban.updatePriority",[{activityId:t,priority:e}])}catch(r){throw new c(r)}})}};var v=class{constructor(t){this.client=t;this.kanban=new w(t)}list(t,e,r){return o(this,null,function*(){try{return(yield this.client.requestAsync("v1.activity.list",[t,e,r])).activities}catch(i){throw new c(i)}})}get(t){return o(this,null,function*(){try{return yield this.client.requestAsync("v1.activity.get",[t])}catch(e){throw new c(e)}})}create(t,e,r){return o(this,null,function*(){try{return yield this.client.requestAsync("v1.activity.create",[t,e,...r?[r]:[]])}catch(i){throw new c(i)}})}update(t,e){return o(this,null,function*(){try{return yield this.client.requestAsync("v1.activity.update",[t,...e?[e]:[]])}catch(r){throw new c(r)}})}remove(t){return o(this,null,function*(){try{return yield this.client.requestAsync("v1.activity.remove",[t])}catch(e){throw new c(e)}})}};var q=class{constructor(t){this.client=t}current(){return o(this,null,function*(){try{return yield this.client.requestAsync("v1.network.current",[])}catch(t){throw new c(t)}})}};var A=class{constructor(t){this.client=t}open(t,e){return o(this,null,function*(){yield this.client.requestAsync("v1.ui.activity.open",[t,...e?[e]:[]])})}create(t,e){return o(this,null,function*(){return yield this.client.requestAsync("v1.ui.activity.create",[t,...e?[e]:[]])})}};var k=class{constructor(t){this.client=t}open(t,e,r){return o(this,null,function*(){yield this.client.requestAsync("v1.ui.snackbar.open",[t,e,r])})}};var P=class{constructor(t){this.client=t}uploadFile(t,e,r){return o(this,null,function*(){return yield this.client.requestAsync("v1.ui.file.upload",[yield this.toBase64(t),e,!!(r!=null&&r.isPublic)])})}toBase64(t){return new Promise((e,r)=>{let i=new FileReader;i.readAsDataURL(t),i.onload=()=>{var s;return e((s=i.result)!=null?s:"")},i.onerror=r})}};var x=class{constructor(t){this.client=t;this.activity=new A(t),this.snackbar=new k(t),this.files=new P(t)}};var C=class{constructor(t){this.client=t}list(){return o(this,null,function*(){try{return yield this.client.requestAsync("v1.process.list",[])}catch(t){throw new c(t)}})}get(t){return o(this,null,function*(){try{return yield this.client.requestAsync("v1.process.get",[t])}catch(e){throw new c(e)}})}getFieldIdByName(t,e){return o(this,null,function*(){var r,i;try{return(i=Object.values(((r=yield this.get(t))==null?void 0:r.fields)||{}).find(s=>s.label.toLowerCase()===e))==null?void 0:i._id}catch(s){throw new c(s)}})}};var K=["https://app.hailer.com","https://next.hailer.com","https://testapp.hailer.biz","https://app.hailer.biz","https://localhost:9443"],y="https://api.hailer.com",J={"https://app.hailer.com":y,"https://next.hailer.com":y,"https://app.hailer.biz":"https://api.hailer.biz","https://testapp.hailer.biz":"https://testapi.hailer.biz","https://localhost:9443":"http://localhost:1337"};var O=class{constructor(t){this.options=t}config(){return o(this,null,function*(){let t="manifest.json",e=window.location.origin+window.location.pathname,r=e+t;e.endsWith("/index.html")&&(r=e.slice(0,-10)+t);let i=yield(yield fetch(r)).text(),n=JSON.parse(i).appId;return yield(yield fetch(this.options.publicBackendUrl+"/api/v3/app/public",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify([n])})).json()})}};var _=class{constructor(t){this.options=t}data(t){return o(this,null,function*(){let e=yield fetch(this.options.publicBackendUrl+"/api/v2/forms/process/get",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify([t])});if(!e.ok)throw new c(yield e.json());return yield e.json()})}submit(t,e){return o(this,null,function*(){let r=yield fetch(this.options.publicBackendUrl+"/api/v2/forms/activity/create",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify([t,e])});if(!r.ok)throw new c(yield r.json());return yield r.json()})}};var R=class{constructor(t){this.options=t}data(t){return o(this,null,function*(){let e=yield fetch(this.options.publicBackendUrl+"/api/v3/insight/public",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify([t])});if(!e.ok)throw new c(yield e.json());return yield e.json()})}dataAsObject(t){return o(this,null,function*(){let r=(yield this.data(t)).data,i=[];return r.rows.forEach(s=>{let n={};r.headers.forEach((l,u)=>{n[l]=s[u]}),i.push(n)}),i})}};var U=class{constructor(t){this.insight=new R(t),this.form=new _(t),this.app=new O(t)}};var S=class{constructor(t){this.client=t}list(){return o(this,null,function*(){try{return yield this.client.requestAsync("v1.workflow.list",[])}catch(t){throw new c(t)}})}get(t){return o(this,null,function*(){try{return yield this.client.requestAsync("v1.workflow.get",[t])}catch(e){throw new c(e)}})}};var j=class{constructor(t){this.client=t;this.config={update:(t,e)=>o(this,null,function*(){try{return yield this.client.requestAsync("v1.app.config.update",[t,e])}catch(r){throw console.log("Errorasd ",r),new c(r)}})}}};var D=class{constructor(t){this.client=t}data(t,e){return o(this,null,function*(){try{return yield this.client.requestAsync("v1.insight.data",[t,...e?[e]:[]])}catch(r){throw new c(r)}})}list(){return o(this,null,function*(){try{return yield this.client.requestAsync("v1.insight.list",[])}catch(t){throw new c(t)}})}update(t,e){return o(this,null,function*(){try{return yield this.client.requestAsync("v1.insight.update",[t,e])}catch(r){throw new c(r)}})}};var L=class{constructor(t={}){this.options=t;this.outside=null;var i,s;let e=(i=t.allowedUrls)!=null?i:K;this.apiVersion=(s=t.apiVersion)!=null?s:1,this.subscribedSignals=t.subscribedSignals||[],this.client=new V.Client(n=>{this.hostUrl&&parent.postMessage(JSON.stringify(n),this.hostUrl)}),this.user=new b(this.client),this.app=new j(this.client),this.activity=new v(this.client),this.insight=new D(this.client),this.network=new q(this.client),this.process=new C(this.client),this.workflow=new S(this.client),this.public=new U(this.options),this.ui=new x(this.client);let r=JSON.stringify({op:"register",args:[]});window.location===window.parent.location?(this.options.publicBackendUrl||(this.options.publicBackendUrl=y),this.public.app.config().then(n=>{var l,u;this.outside=!0,(u=(l=this.options).outside)==null||u.call(l,n)}).catch(n=>{var l,u;(u=(l=this.options).error)==null||u.call(l,n),console.error("Failed to get app configuration in Public App.",n)})):(e.forEach(n=>parent.postMessage(r,n)),this.timer=setTimeout(()=>{var n,l;this.outside=!0,(l=(n=this.options).outside)==null||l.call(n)},100)),this.createEventListener()}createEventListener(){window.addEventListener("message",t=>o(this,null,function*(){var r,i;let e=t.data;try{let s=JSON.parse(e);if(s.op==="register"){if(this.appId){console.error("App Id is already set...! Are you using hot-reload?");return}clearTimeout(this.timer),this.appId=s.data.appId,this.hostUrl=t.origin,this.options.publicBackendUrl||(this.options.publicBackendUrl=J[this.hostUrl]||y),this.client.request("v1.ui.settings",[],(n,l,u)=>{var h,p;if(n){console.log("ui.settings error:",n,l);return}(p=(h=this.options).settings)==null||p.call(h,l)}),this.client.request("v1.config",[],(n,l,u)=>{var h,p;if(n){console.log("config error:",n,l);return}(p=(h=this.options).config)==null||p.call(h,l)}),this.subscribedSignals&&this.client.request("v1.signals",[this.subscribedSignals],(n,l,u)=>{var h,p;if(n){console.log("signals error:",n,l);return}l&&((p=(h=this.options).signals)==null||p.call(h,l))}),this.outside=!1,(i=(r=this.options).connected)==null||i.call(r);return}if(!this.appId)return;this.client.messageReceived(s)}catch(s){console.log("Dropped invalid JSON message")}}))}info(){return{hostUrl:this.hostUrl,config:this.config,outside:this.outside}}request(t,e){return o(this,null,function*(){return yield this.client.requestAsync(t,e)})}};export{L as HailerApi,c as HailerError};
1
+ var ue=Object.create;var K=Object.defineProperty;var le=Object.getOwnPropertyDescriptor;var pe=Object.getOwnPropertyNames;var fe=Object.getPrototypeOf,he=Object.prototype.hasOwnProperty;var b=(n,e)=>()=>(e||n((e={exports:{}}).exports,e),e.exports);var de=(n,e,t,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of pe(e))!he.call(n,i)&&i!==t&&K(n,i,{get:()=>e[i],enumerable:!(r=le(e,i))||r.enumerable});return n};var ge=(n,e,t)=>(t=n!=null?ue(fe(n)):{},de(e||!n||!n.__esModule?K(t,"default",{value:n,enumerable:!0}):t,n));var a=(n,e,t)=>new Promise((r,i)=>{var s=l=>{try{c(t.next(l))}catch(f){i(f)}},o=l=>{try{c(t.throw(l))}catch(f){i(f)}},c=l=>l.done?r(l.value):Promise.resolve(l.value).then(s,o);c((t=t.apply(n,e)).next())});var te=b((Pe,N)=>{"use strict";var g=typeof Reflect=="object"?Reflect:null,J=g&&typeof g.apply=="function"?g.apply:function(e,t,r){return Function.prototype.apply.call(e,t,r)},w;g&&typeof g.ownKeys=="function"?w=g.ownKeys:Object.getOwnPropertySymbols?w=function(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:w=function(e){return Object.getOwnPropertyNames(e)};function ye(n){console&&console.warn&&console.warn(n)}var z=Number.isNaN||function(e){return e!==e};function p(){p.init.call(this)}N.exports=p;N.exports.once=we;p.EventEmitter=p;p.prototype._events=void 0;p.prototype._eventsCount=0;p.prototype._maxListeners=void 0;var V=10;function q(n){if(typeof n!="function")throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof n)}Object.defineProperty(p,"defaultMaxListeners",{enumerable:!0,get:function(){return V},set:function(n){if(typeof n!="number"||n<0||z(n))throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received '+n+".");V=n}});p.init=function(){(this._events===void 0||this._events===Object.getPrototypeOf(this)._events)&&(this._events=Object.create(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0};p.prototype.setMaxListeners=function(e){if(typeof e!="number"||e<0||z(e))throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received '+e+".");return this._maxListeners=e,this};function G(n){return n._maxListeners===void 0?p.defaultMaxListeners:n._maxListeners}p.prototype.getMaxListeners=function(){return G(this)};p.prototype.emit=function(e){for(var t=[],r=1;r<arguments.length;r++)t.push(arguments[r]);var i=e==="error",s=this._events;if(s!==void 0)i=i&&s.error===void 0;else if(!i)return!1;if(i){var o;if(t.length>0&&(o=t[0]),o instanceof Error)throw o;var c=new Error("Unhandled error."+(o?" ("+o.message+")":""));throw c.context=o,c}var l=s[e];if(l===void 0)return!1;if(typeof l=="function")J(l,this,t);else for(var f=l.length,h=$(l,f),r=0;r<f;++r)J(h[r],this,t);return!0};function Q(n,e,t,r){var i,s,o;if(q(t),s=n._events,s===void 0?(s=n._events=Object.create(null),n._eventsCount=0):(s.newListener!==void 0&&(n.emit("newListener",e,t.listener?t.listener:t),s=n._events),o=s[e]),o===void 0)o=s[e]=t,++n._eventsCount;else if(typeof o=="function"?o=s[e]=r?[t,o]:[o,t]:r?o.unshift(t):o.push(t),i=G(n),i>0&&o.length>i&&!o.warned){o.warned=!0;var c=new Error("Possible EventEmitter memory leak detected. "+o.length+" "+String(e)+" listeners added. Use emitter.setMaxListeners() to increase limit");c.name="MaxListenersExceededWarning",c.emitter=n,c.type=e,c.count=o.length,ye(c)}return n}p.prototype.addListener=function(e,t){return Q(this,e,t,!1)};p.prototype.on=p.prototype.addListener;p.prototype.prependListener=function(e,t){return Q(this,e,t,!0)};function me(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,arguments.length===0?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function X(n,e,t){var r={fired:!1,wrapFn:void 0,target:n,type:e,listener:t},i=me.bind(r);return i.listener=t,r.wrapFn=i,i}p.prototype.once=function(e,t){return q(t),this.on(e,X(this,e,t)),this};p.prototype.prependOnceListener=function(e,t){return q(t),this.prependListener(e,X(this,e,t)),this};p.prototype.removeListener=function(e,t){var r,i,s,o,c;if(q(t),i=this._events,i===void 0)return this;if(r=i[e],r===void 0)return this;if(r===t||r.listener===t)--this._eventsCount===0?this._events=Object.create(null):(delete i[e],i.removeListener&&this.emit("removeListener",e,r.listener||t));else if(typeof r!="function"){for(s=-1,o=r.length-1;o>=0;o--)if(r[o]===t||r[o].listener===t){c=r[o].listener,s=o;break}if(s<0)return this;s===0?r.shift():ve(r,s),r.length===1&&(i[e]=r[0]),i.removeListener!==void 0&&this.emit("removeListener",e,c||t)}return this};p.prototype.off=p.prototype.removeListener;p.prototype.removeAllListeners=function(e){var t,r,i;if(r=this._events,r===void 0)return this;if(r.removeListener===void 0)return arguments.length===0?(this._events=Object.create(null),this._eventsCount=0):r[e]!==void 0&&(--this._eventsCount===0?this._events=Object.create(null):delete r[e]),this;if(arguments.length===0){var s=Object.keys(r),o;for(i=0;i<s.length;++i)o=s[i],o!=="removeListener"&&this.removeAllListeners(o);return this.removeAllListeners("removeListener"),this._events=Object.create(null),this._eventsCount=0,this}if(t=r[e],typeof t=="function")this.removeListener(e,t);else if(t!==void 0)for(i=t.length-1;i>=0;i--)this.removeListener(e,t[i]);return this};function Y(n,e,t){var r=n._events;if(r===void 0)return[];var i=r[e];return i===void 0?[]:typeof i=="function"?t?[i.listener||i]:[i]:t?be(i):$(i,i.length)}p.prototype.listeners=function(e){return Y(this,e,!0)};p.prototype.rawListeners=function(e){return Y(this,e,!1)};p.listenerCount=function(n,e){return typeof n.listenerCount=="function"?n.listenerCount(e):Z.call(n,e)};p.prototype.listenerCount=Z;function Z(n){var e=this._events;if(e!==void 0){var t=e[n];if(typeof t=="function")return 1;if(t!==void 0)return t.length}return 0}p.prototype.eventNames=function(){return this._eventsCount>0?w(this._events):[]};function $(n,e){for(var t=new Array(e),r=0;r<e;++r)t[r]=n[r];return t}function ve(n,e){for(;e+1<n.length;e++)n[e]=n[e+1];n.pop()}function be(n){for(var e=new Array(n.length),t=0;t<e.length;++t)e[t]=n[t].listener||n[t];return e}function we(n,e){return new Promise(function(t,r){function i(o){n.removeListener(e,s),r(o)}function s(){typeof n.removeListener=="function"&&n.removeListener("error",i),t([].slice.call(arguments))}ee(n,e,s,{once:!0}),e!=="error"&&qe(n,i,{once:!0})})}function qe(n,e,t){typeof n.on=="function"&&ee(n,"error",e,t)}function ee(n,e,t,r){if(typeof n.on=="function")r.once?n.once(e,t):n.on(e,t);else if(typeof n.addEventListener=="function")n.addEventListener(e,function i(s){r.once&&n.removeEventListener(e,i),t(s)});else throw new TypeError('The "emitter" argument must be of type EventEmitter. Received type '+typeof n)}});var ie=b(y=>{"use strict";var Ae=y&&y.__awaiter||function(n,e,t,r){function i(s){return s instanceof t?s:new t(function(o){o(s)})}return new(t||(t=Promise))(function(s,o){function c(h){try{f(r.next(h))}catch(M){o(M)}}function l(h){try{f(r.throw(h))}catch(M){o(M)}}function f(h){h.done?s(h.value):i(h.value).then(c,l)}f((r=r.apply(n,e||[])).next())})};Object.defineProperty(y,"__esModule",{value:!0});y.Client=void 0;var Le=te(),I=class extends Le.EventEmitter{constructor(e,t){super(),this.write=e,this.requests={},this.id=0,this.mtu=65535,t&&t.mtu&&(this.mtu=t.mtu)}destroy(){this.requests=null,this.write=null}messageReceived(e){let t=!!(e.err||e.ack||e.fin),r=e.ack||e.err||e.sig||e.fin,i=this.requests[r],s;if(i&&typeof i.cb=="function"){let o;e.fin?i.cb.call(i.context,null,null,!0):i.canceled?console.log("This request is canceled. Not calling the callback."):(o=e.err?e.data:null,s=i.cb.call(i.context,o,e.data,t))}return t&&delete this.requests[r],s}requestAsync(e,t){return Ae(this,void 0,void 0,function*(){return new Promise((r,i)=>{this.request(e,t,(s,o)=>{if(s)return i(o);r(o)})})})}request(e,t,r){this.id++;let i={op:e};return Array.isArray(t)&&(i.args=t),r&&(i.id=this.id,this.requests[i.id]={cb:r,context:{id:i.id,cancel:()=>{setTimeout((s=>()=>{this.requests[s]&&console.log("rpc-client.js: timeout, the request has not been removed while it was canceled",s,this.requests[s])})(i.id),1500),this.requests[i.id].canceled=!0,this.write({end:i.id})},emit:s=>this.write({sig:i.id,data:s})}}),this.write(i),i.id||null}send(e,t){this.write({push:e,data:t})}end(e){this.write({end:e})}};y.Client=I});var re=b(A=>{"use strict";Object.defineProperty(A,"__esModule",{value:!0});A.Server=void 0;var m=console.log,B=class{constructor(e){this.modules={},this.methods={},this.requests={},this.clientIdCounter=0,this.requestId=0,this.invokeId=0,e&&this.insertMethods(e)}destroy(){for(let e in this.requests){for(let t in this.requests[e])typeof this.requests[e][t].end=="function"&&this.requests[e][t].end();delete this.requests[e]}}insertMethods(e){let t="";this.addMethods(t,e)}addMethods(e,t){let r=e?e+".":"";for(let i in t)if(i!=="_"){if(i.substring(0,1)!=="_"&&t["_"+i])if(typeof t[i]=="function"){let s=t["_"+i].name||i;t["_"+i].fullname=r+s;try{this.modules[r+s]=t["_"+i],this.methods[r+s]=t[i]}catch(o){console.log("Kaboom! ",o)}}else typeof t[i]=="object"&&this.addMethods(r+i,t[i])}}listMethods(e,t,r){let i={};function s(c,l){let f={};for(let h in c)l[h]||(f[h]=c[h]);return f}let o={fullname:!0};for(let c in this.modules)i[c]=s(this.modules[c],o);r(null,i)}clientOffline(e){for(let t in this.requests[e])typeof this.requests[e][t].end=="function"&&this.requests[e][t].end(),delete this.requests[e][t]}closeAll(){for(let e in this.requests)for(let t in this.requests[e])typeof this.requests[e][t].end=="function"&&this.requests[e][t].end(),delete this.requests[e][t]}parse(e,t,r,i){if(typeof i=="number")try{if(e.push){this.requests[i]&&this.requests[i][e.push]&&this.invokeRaw(e,t,this.requests[i][e.push].context,i);return}if(e.sig){this.requests[i]&&this.requests[i][e.sig]&&this.invokeRaw(e,t,this.requests[i][e.sig].context,i);return}if(e.end){let s=e.end;if(this.requests[i]&&this.requests[i][s]){typeof this.requests[i][s].end=="function"&&this.requests[i][s].end(),t({fin:s}),delete this.requests[i][s];return}if(!this.requests[i][s])return;typeof this.requests[i][s].end=="function"&&this.requests[s].end();return}if(e.op==="methods"){this.listMethods(e.args,r,function(s,o){t({ack:e.id,data:o})});return}if(typeof this.methods[e.op]>"u"){t({err:e.id,data:{code:300,msg:"No method found: "+e.op}});return}this.invokeRaw(e,t,r,i)}catch(s){m("Dynamic RPC failed to execute ",e.op,s,s.stack);try{console.log("RPC caught error",s.stack),t({ack:e.id,err:e.id,data:"caught error in "+e.op+": "+s.toString(),debug:s.stack})}catch(o){t({err:e.id,data:"rpc",errmsg:o.toString()})}}}emit(e,t){for(let r in this.requests)if(this.requests[r]){for(let i in this.requests[r])if(this.requests[r][i].op===e){let{send:s}=this.requests[r][i];s({sig:i,data:t})}}}invokeRaw(e,t,r,i){if(++this.requestId,!this.requests[i])return console.log("Session not opened for client. Use Server.open() first");if(e.push){let s=this.requests[i][e.push];if(e.data===null){console.log("msg.data is null:",e);return}s.data(e.data);return}if(e.sig){let s=this.requests[i][e.sig];try{this.methods[s.op].call(this.requests[i][e.sig],e.data,{send:o=>{typeof s.end=="function"&&s.end(),this.requests[i][e.sig]&&delete this.requests[i][e.sig],t({ack:e.sig,data:o})},emit:o=>(this.requests[i][e.sig]||typeof s.end=="function"&&s.end(),t({sig:e.sig,data:o})),error:o=>{typeof s.end=="function"&&s.end(),delete this.requests[i][e.sig],t({err:e.sig,data:o})},close:o=>{typeof s.end=="function"&&s.end(),delete this.requests[i][e.sig],t({fin:e.sig})}},r)}catch(o){console.log("Calling the method in RPC failed:",e.op,e.args,o.stack),delete this.requests[i][e.sig],t({err:e.sig,data:{msg:"rpc failed during execution of "+e.op,code:578}})}return}if(typeof e.id>"u"){let s={};this.methods[e.op].call(s,{args:e.args},{send:()=>{m("Trying to send response to event ("+e.op+"). Dropping.")},emit:()=>{m("Trying to emit response to event ("+e.op+"). Dropping.")},error:()=>{m("Trying to respond with error to event ("+e.op+"). Dropping.")},close:()=>{m("Trying to close event ("+e.op+"). Dropping.")}},r)}else{let s={id:e.id,op:e.op,args:e.args,context:r,end:null,send:t};this.requests[i]||(this.requests[i]={}),this.requests[i][e.id]&&(console.log("Serious warning. There is already a request by that id, we'll kill it off! This session is likely not clean. clientId:",i,"msg",e,"stack trace:",new Error().stack),typeof this.requests[i][e.id].end=="function"&&this.requests[i][e.id].end(),delete this.requests[i][e.id],console.log("Removed old request by same id from same client...")),this.requests[i][e.id]=s;try{this.methods[e.op].call(s,{args:e.args},{send:o=>{typeof s.end=="function"&&s.end(),this.requests[i][e.id]&&delete this.requests[i][e.id],t({ack:e.id,data:o})},emit:o=>(this.requests[i][e.id]||typeof s.end=="function"&&s.end(),t({sig:e.id,data:o})),error:o=>{typeof s.end=="function"&&s.end(),delete this.requests[i][e.id],t({err:e.id,data:o})},close:o=>{typeof s.end=="function"&&s.end(),delete this.requests[i][e.id],t({fin:e.id})}},r)}catch(o){console.log("Calling the method in RPC failed:",e.op,e.args,o.stack),delete this.requests[i][e.id],t({err:e.id,data:{msg:"rpc failed during execution of "+e.op,code:578}})}}}close(e){for(let t in this.requests[e])typeof this.requests[e][t].end=="function"&&this.requests[e][t].end(),delete this.requests[e][t];delete this.requests[e]}open(){let e=++this.clientIdCounter;return this.requests[e]={},e}};A.Server=B});var se=b(d=>{"use strict";var xe=d&&d.__createBinding||(Object.create?function(n,e,t,r){r===void 0&&(r=t),Object.defineProperty(n,r,{enumerable:!0,get:function(){return e[t]}})}:function(n,e,t,r){r===void 0&&(r=t),n[r]=e[t]}),ne=d&&d.__exportStar||function(n,e){for(var t in n)t!=="default"&&!Object.prototype.hasOwnProperty.call(e,t)&&xe(e,n,t)};Object.defineProperty(d,"__esModule",{value:!0});ne(ie(),d);ne(re(),d)});var ce=ge(se(),1);var u=class extends Error{constructor(t){super();this.code=t.code,this.msg=t.msg,this.debug=t.debug,Object.setPrototypeOf(this,u.prototype)}};var L=class{constructor(e){this.client=e}get(e){return a(this,null,function*(){try{return yield this.client.requestAsync("v1.user.get",[e])}catch(t){throw new u(t)}})}current(){return a(this,null,function*(){try{return yield this.client.requestAsync("v1.user.current",[])}catch(e){throw new u(e)}})}list(){return a(this,null,function*(){try{return yield this.client.requestAsync("v1.user.list",[])}catch(e){throw new u(e)}})}};var x=class{constructor(e){this.client=e}list(e,t){return a(this,null,function*(){try{return yield this.client.requestAsync("v1.activity.kanban.list",[e,...t?[t]:[]])}catch(r){throw new u(r)}})}load(e){return a(this,null,function*(){try{return yield this.client.requestAsync("v1.activity.kanban.load",[e])}catch(t){throw new u(t)}})}updatePriority(e,t){return a(this,null,function*(){try{return yield this.client.requestAsync("v1.activity.kanban.updatePriority",[{activityId:e,priority:t}])}catch(r){throw new u(r)}})}};var _=class{constructor(e){this.client=e;this.kanban=new x(e)}list(e,t,r){return a(this,null,function*(){try{return(yield this.client.requestAsync("v1.activity.list",[e,t,r])).activities}catch(i){throw new u(i)}})}get(e){return a(this,null,function*(){try{return yield this.client.requestAsync("v1.activity.get",[e])}catch(t){throw new u(t)}})}create(e,t,r){return a(this,null,function*(){try{return yield this.client.requestAsync("v1.activity.create",[e,t,...r?[r]:[]])}catch(i){throw new u(i)}})}update(e,t){return a(this,null,function*(){try{return yield this.client.requestAsync("v1.activity.update",[e,...t?[t]:[]])}catch(r){throw new u(r)}})}remove(e){return a(this,null,function*(){try{return yield this.client.requestAsync("v1.activity.remove",[e])}catch(t){throw new u(t)}})}};var O=class{constructor(e){this.client=e}current(){return a(this,null,function*(){try{return yield this.client.requestAsync("v1.network.current",[])}catch(e){throw new u(e)}})}};var P=class{constructor(e){this.client=e}open(e,t){return a(this,null,function*(){yield this.client.requestAsync("v1.ui.activity.open",[e,...t?[t]:[]])})}create(e,t){return a(this,null,function*(){return yield this.client.requestAsync("v1.ui.activity.create",[e,...t?[t]:[]])})}};var C=class{constructor(e){this.client=e}open(e,t,r){return a(this,null,function*(){yield this.client.requestAsync("v1.ui.snackbar.open",[e,t,r])})}};var k=class{constructor(e){this.client=e}uploadFile(e,t,r){return a(this,null,function*(){return yield this.client.requestAsync("v1.ui.file.upload",[yield this.toBase64(e),t,!!(r!=null&&r.isPublic)])})}toBase64(e){return new Promise((t,r)=>{let i=new FileReader;i.readAsDataURL(e),i.onload=()=>{var s;return t((s=i.result)!=null?s:"")},i.onerror=r})}};var R=class{constructor(e){this.client=e;this.activity=new P(e),this.snackbar=new C(e),this.insight={create:t=>a(this,null,function*(){yield e.requestAsync("v1.ui.insight.create",[t])}),edit:t=>a(this,null,function*(){yield e.requestAsync("v1.ui.insight.edit",[t])}),delete:t=>a(this,null,function*(){yield e.requestAsync("v1.ui.insight.delete",[t])}),permission:t=>a(this,null,function*(){yield e.requestAsync("v1.ui.insight.permission",[t])})},this.files=new k(e)}};var E=class{constructor(e){this.client=e}list(){return a(this,null,function*(){try{return yield this.client.requestAsync("v1.process.list",[])}catch(e){throw new u(e)}})}get(e){return a(this,null,function*(){try{return yield this.client.requestAsync("v1.process.get",[e])}catch(t){throw new u(t)}})}getFieldIdByName(e,t){return a(this,null,function*(){var r,i;try{return(i=Object.values(((r=yield this.get(e))==null?void 0:r.fields)||{}).find(s=>s.label.toLowerCase()===t))==null?void 0:i._id}catch(s){throw new u(s)}})}};var oe=["https://app.hailer.com","https://next.hailer.com","https://testapp.hailer.biz","https://app.hailer.biz","https://localhost:9443"],v="https://api.hailer.com",ae={"https://app.hailer.com":v,"https://next.hailer.com":v,"https://app.hailer.biz":"https://api.hailer.biz","https://testapp.hailer.biz":"https://testapi.hailer.biz","https://localhost:9443":"http://localhost:1337"};var j=class{constructor(e){this.options=e}config(){return a(this,null,function*(){let e="manifest.json",t=window.location.origin+window.location.pathname,r=t+e;t.endsWith("/index.html")&&(r=t.slice(0,-10)+e);let i=yield(yield fetch(r)).text(),o=JSON.parse(i).appId;return yield(yield fetch(this.options.publicBackendUrl+"/api/v3/app/public",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify([o])})).json()})}};var U=class{constructor(e){this.options=e}data(e){return a(this,null,function*(){let t=yield fetch(this.options.publicBackendUrl+"/api/v2/forms/process/get",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify([e])});if(!t.ok)throw new u(yield t.json());return yield t.json()})}submit(e,t){return a(this,null,function*(){let r=yield fetch(this.options.publicBackendUrl+"/api/v2/forms/activity/create",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify([e,t])});if(!r.ok)throw new u(yield r.json());return yield r.json()})}};var S=class{constructor(e){this.options=e}data(e){return a(this,null,function*(){let t=yield fetch(this.options.publicBackendUrl+"/api/v3/insight/public",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify([e])});if(!t.ok)throw new u(yield t.json());return yield t.json()})}dataAsObject(e){return a(this,null,function*(){let r=(yield this.data(e)).data,i=[];return r.rows.forEach(s=>{let o={};r.headers.forEach((c,l)=>{o[c]=s[l]}),i.push(o)}),i})}};var T=class{constructor(e){this.insight=new S(e),this.form=new U(e),this.app=new j(e)}};var F=class{constructor(e){this.client=e}list(){return a(this,null,function*(){try{return yield this.client.requestAsync("v1.workflow.list",[])}catch(e){throw new u(e)}})}get(e){return a(this,null,function*(){try{return yield this.client.requestAsync("v1.workflow.get",[e])}catch(t){throw new u(t)}})}};var D=class{constructor(e){this.client=e;this.config={update:(e,t)=>a(this,null,function*(){try{return yield this.client.requestAsync("v1.app.config.update",[e,t])}catch(r){throw console.log("Errorasd ",r),new u(r)}})}}};var H=class{constructor(e){this.client=e}data(e,t){return a(this,null,function*(){try{return yield this.client.requestAsync("v1.insight.data",[e,...t?[t]:[]])}catch(r){throw new u(r)}})}list(){return a(this,null,function*(){try{return yield this.client.requestAsync("v1.insight.list",[])}catch(e){throw new u(e)}})}update(e,t){return a(this,null,function*(){try{return yield this.client.requestAsync("v1.insight.update",[e,t])}catch(r){throw new u(r)}})}};var W=class{constructor(e={}){this.options=e;this.outside=null;var i,s;let t=(i=e.allowedUrls)!=null?i:oe;this.apiVersion=(s=e.apiVersion)!=null?s:1,this.subscribedSignals=e.subscribedSignals||[],this.client=new ce.Client(o=>{this.hostUrl&&parent.postMessage(JSON.stringify(o),this.hostUrl)}),this.user=new L(this.client),this.app=new D(this.client),this.activity=new _(this.client),this.insight=new H(this.client),this.network=new O(this.client),this.process=new E(this.client),this.workflow=new F(this.client),this.public=new T(this.options),this.ui=new R(this.client);let r=JSON.stringify({op:"register",args:[]});window.location===window.parent.location?(this.options.publicBackendUrl||(this.options.publicBackendUrl=v),this.public.app.config().then(o=>{var c,l;this.outside=!0,(l=(c=this.options).outside)==null||l.call(c,o)}).catch(o=>{var c,l;(l=(c=this.options).error)==null||l.call(c,o),console.error("Failed to get app configuration in Public App.",o)})):(t.forEach(o=>parent.postMessage(r,o)),this.timer=setTimeout(()=>{var o,c;this.outside=!0,(c=(o=this.options).outside)==null||c.call(o)},100)),this.createEventListener()}createEventListener(){window.addEventListener("message",e=>a(this,null,function*(){var r,i;let t=e.data;try{let s=JSON.parse(t);if(s.op==="register"){if(this.appId){console.error("App Id is already set...! Are you using hot-reload?");return}clearTimeout(this.timer),this.appId=s.data.appId,this.hostUrl=e.origin,this.options.publicBackendUrl||(this.options.publicBackendUrl=ae[this.hostUrl]||v),this.client.request("v1.ui.settings",[],(o,c,l)=>{var f,h;if(o){console.log("ui.settings error:",o,c);return}(h=(f=this.options).settings)==null||h.call(f,c)}),this.client.request("v1.config",[],(o,c,l)=>{var f,h;if(o){console.log("config error:",o,c);return}(h=(f=this.options).config)==null||h.call(f,c)}),this.subscribedSignals&&this.client.request("v1.signals",[this.subscribedSignals],(o,c,l)=>{var f,h;if(o){console.log("signals error:",o,c);return}c&&((h=(f=this.options).signals)==null||h.call(f,c))}),this.outside=!1,(i=(r=this.options).connected)==null||i.call(r);return}if(!this.appId)return;this.client.messageReceived(s)}catch(s){console.log("Dropped invalid JSON message")}}))}info(){return{hostUrl:this.hostUrl,config:this.config,outside:this.outside}}request(e,t){return a(this,null,function*(){return yield this.client.requestAsync(e,t)})}};export{W as HailerApi,u as HailerError};
2
2
  //# sourceMappingURL=app-sdk.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../node_modules/@wishcore/wish-rpc/src/rpc-client.ts", "../node_modules/@wishcore/wish-rpc/src/rpc-server.ts", "../node_modules/@wishcore/wish-rpc/src/index.ts", "../src/hailer-api.ts", "../src/types.ts", "../src/modules/user.ts", "../src/modules/activity/kanban.ts", "../src/modules/activity.ts", "../src/modules/network.ts", "../src/modules/ui/activity.ts", "../src/modules/ui/snackbar.ts", "../src/modules/ui/files.ts", "../src/modules/ui.ts", "../src/modules/process.ts", "../src/constants.ts", "../src/modules/public/app.ts", "../src/modules/public/form.ts", "../src/modules/public/insight.ts", "../src/modules/public.ts", "../src/modules/workflow.ts", "../src/modules/app.ts", "../src/modules/insight.ts"],
4
- "sourcesContent": [null, null, null, "import { Client } from '@wishcore/wish-rpc';\nimport { UserApi } from './modules/user';\nimport { ActivityApi } from './modules/activity';\nimport { WorkspaceApi } from './modules/network';\nimport { HailerApiInfo, HailerAppConfig, HailerSettings, HailerSignal } from './types';\nimport { Ui } from './modules/ui';\nimport { Process } from './modules/process';\nimport { DEFAULT_ALLOWED_URLS, DEFAULT_API_VERSION, DEFAULT_BACKEND_URL, publicBackendMap } from './constants';\nimport { HailerPublicApi } from './modules/public';\nimport { WorkflowApi } from './modules/workflow';\nimport { AppApi } from './modules/app';\nimport { InsightApi } from './modules/insight';\n\nexport interface Options {\n /** When connected is called the host is ready to receive calls */\n connected?: () => void;\n /** Callback when app is determined to be outside of Hailer, as a standalone app */\n outside?: (config?: any) => void;\n /** Callback on errors, defaults to printing errors in console */\n error?: (error: Error) => void;\n /** Callback called on app init and when permissions have changed */\n permissions?: () => void;\n /** Callback called on app init and when settings have changed */\n settings?: (data: HailerSettings) => void;\n /** Callback called on app init and when config has changed */\n config?: (config: any) => void;\n /** Will be called each time a subscribed signal is emitted from Hailer frontend. To subscribe to signals, add them to options.subscribedSignals[] */\n signals?: (signal: HailerSignal) => void;\n /** Urls the sdk is allowed to connect to. Defaults to all Hailer instances*/\n allowedUrls?: string[];\n /**\n * Optional signal filter, passes all signals by default\n * \n * Example:\n * \n * subscribedSignals: ['activity.create', 'activity.update']\n */\n subscribedSignals?: string[];\n /** Api version to be used in the app by default */\n apiVersion?: 1;\n /** Public backend Api url. Defaults to https://api.hailer.com */\n publicBackendUrl?: string;\n}\n\nexport class HailerApi {\n public user: UserApi;\n public app: AppApi;\n public activity: ActivityApi;\n public insight: InsightApi;\n public network: WorkspaceApi;\n public process: Process;\n public workflow: WorkflowApi;\n /** All public endpoints, which can be accessed while not logged in to Hailer. */\n public public: HailerPublicApi;\n /** User interface commands */\n public ui: Ui;\n /** Url of the Hailer instance hosting the API */\n private hostUrl?: string;\n\n private appId?: string;\n private client: Client;\n private apiVersion: 1;\n private settings?: HailerSettings;\n private config?: HailerAppConfig;\n private subscribedSignals?: string[];\n private timer?: NodeJS.Timeout;\n /**\n * Hailer API state\n * \n * ```\n * true // outside hailer\n * false // logged into hailer\n * null // state not yet detected\n * ``` \n */\n private outside: boolean | null = null;\n\n /**\n * Create a Hailer API client for inteacting with Hailer. **NOTE** This only works when inside Hailer.\n *\n * This should be run after window is initialized for example in ***onMount*** in Svelte or in ***useEffect*** in React\n */\n constructor(\n public options: Options = {}\n ) {\n const allowedUrls = options.allowedUrls ?? DEFAULT_ALLOWED_URLS;\n this.apiVersion = options.apiVersion ?? DEFAULT_API_VERSION;\n this.subscribedSignals = options.subscribedSignals || [];\n \n this.client = new Client(msg => {\n if (this.hostUrl){\n parent.postMessage(JSON.stringify(msg), this.hostUrl)\n }\n })\n\n this.user = new UserApi(this.client);\n this.app = new AppApi(this.client);\n this.activity = new ActivityApi(this.client);\n this.insight = new InsightApi(this.client);\n this.network = new WorkspaceApi(this.client);\n this.process = new Process(this.client);\n this.workflow = new WorkflowApi(this.client);\n this.public = new HailerPublicApi(this.options);\n this.ui = new Ui(this.client);\n\n const registerMessage = JSON.stringify({ op: 'register', args: [] });\n\n // If we are not in Iframe set location to outside, else wait 100ms for response to register to check if we are in Hailer\n if (window.location === window.parent.location) {\n // Pick a backend to use for public requests, unless it is set\n if (!this.options.publicBackendUrl) {\n this.options.publicBackendUrl = DEFAULT_BACKEND_URL;\n }\n\n this.public.app.config().then(config => {\n // CSM app assumes we are inside hailer when config is called... breaks the thing...\n // this.options.config?.(config);\n\n this.outside = true;\n this.options.outside?.(config);\n }).catch(error => {\n this.options.error?.(error);\n console.error('Failed to get app configuration in Public App.', error);\n });\n } else {\n // if in a frame, try register to Hailer by sending register to all allowed urls\n allowedUrls.forEach(url => parent.postMessage(registerMessage, url));\n this.timer = setTimeout(() => {\n this.outside = true;\n this.options.outside?.()\n }, 100);\n }\n\n this.createEventListener();\n }\n\n private createEventListener() {\n window.addEventListener('message', async event => {\n const data = event.data;\n\n try {\n const msg = JSON.parse(data);\n if (msg.op === 'register') {\n if (this.appId) {\n console.error('App Id is already set...! Are you using hot-reload?');\n return;\n }\n\n clearTimeout(this.timer)\n this.appId = msg.data.appId\n\n // Set host url now that we have a response\n this.hostUrl = event.origin\n\n // Pick a backend to use for public requests, unless it is set\n if (!this.options.publicBackendUrl) {\n this.options.publicBackendUrl = publicBackendMap[this.hostUrl] || DEFAULT_BACKEND_URL;\n }\n\n // Register listeners for config and settings\n this.client.request('v1.ui.settings', [], (error: any, data: HailerSettings, end: boolean) => {\n if (error) {\n console.log('ui.settings error:', error, data);\n return;\n }\n\n this.options.settings?.(data);\n });\n\n this.client.request('v1.config', [], (error: any, data: any, end: boolean) => {\n if (error) {\n console.log('config error:', error, data);\n return;\n }\n this.options.config?.(data)\n })\n\n // Register subscribed signals\n if (this.subscribedSignals) {\n this.client.request('v1.signals', [this.subscribedSignals], (error: any, data: any, end: boolean) => {\n if (error) {\n console.log('signals error:', error, data);\n return;\n }\n\n if (data) {\n this.options.signals?.(data);\n }\n });\n }\n\n this.outside = false;\n // Call connected callback\n this.options.connected?.();\n return;\n }\n\n // bail out unless appId is set, as the app is not properly registered\n if (!this.appId) {\n return;\n }\n\n this.client.messageReceived(msg);\n } catch (error) {\n console.log('Dropped invalid JSON message');\n }\n });\n }\n\n info(): HailerApiInfo {\n return {\n hostUrl: this.hostUrl,\n config: this.config,\n outside: this.outside,\n }\n }\n\n // TODO: This is here for development and debugging, might be removed later\n async request(op: string, args: any[]) {\n return await this.client.requestAsync(op, args);\n }\n}\n", "export interface User {\n firstname: string;\n lastname: string;\n email: string;\n lastSeen: number;\n status?: string;\n managedUser?: boolean;\n removed?: number;\n}\n\nexport interface Workspace {\n _id: string;\n name: string;\n members: string[];\n settings: {\n isolatedTeams?: boolean;\n defaultView: string;\n functionFieldVersion?: 1 | 2;\n color?: string;\n allowPublicCopy?: boolean;\n };\n license: object;\n invoicing?: any;\n propertyFields?: {\n [section: string]: {\n [field: string]: any;\n };\n };\n}\n\nexport interface Activity {\n _id: string;\n process: string;\n teamAccount: TeamAccount // TODO: Convert in frontend\n created: number;\n uid: string;\n cid: string;\n discussion: string;\n currentPhase: string;\n active?: boolean;\n history?: any[];\n name?: string;\n followers?: string[];\n completePhases?: string[];\n location?: {\n type: 'point' | 'area' | 'polyline',\n label: string | null\n data: {\n lat: number\n lng: number\n }[]\n };\n fields?: any;\n files?: any[];\n updated?: number;\n updatedBy?: string;\n priority?: number;\n sequence?: number\n}\n\nexport interface TeamAccount {\n account: string;\n team: string;\n}\n\nexport interface FormsData {\n files: string[];\n history: {\n // eslint-disable-next-line @typescript-eslint/naming-convention\n 0: {\n [fieldId: string]: {\n value: any;\n };\n };\n };\n name: string;\n location?: boolean;\n uid?: string;\n}\nexport interface FormsResponse {\n name: string;\n description?: string;\n enableUnlinkedMode: boolean;\n enableAttachments: boolean;\n enableMapLocation: boolean;\n locationRequired: 1;\n phases: {\n _id: string;\n followers: [];\n name: string;\n description: string;\n uid: string;\n created: number;\n fields: string[];\n announcementFields: [];\n announcementRecipients: [];\n announcementFieldsOrder: [];\n isEndpoint: boolean;\n }[];\n phasesOrder: string[];\n fields: {\n [id: string]: {\n data: [];\n label: string;\n required: boolean;\n type: string;\n inviteToDiscussionOnChange: boolean;\n _id: string;\n created: number;\n updated: number;\n uid: string;\n functionEnabled: boolean;\n };\n };\n enableMessenger: boolean;\n publicForm: {\n enableMessaging: boolean;\n };\n fieldsOrder: [];\n}\n\nexport interface FormCreateResponse {\n key: string,\n creator: string,\n followers: string,\n active: boolean,\n enableMessaging: boolean,\n allowRead: boolean\n}\n\nexport interface InsightResponse {\n insight: {\n name: string\n },\n data: InsightResponseData\n}\n\nexport interface InsightResponseData {\n headers: string[],\n rows: [],\n time: number\n}\n\nexport interface HailerAppConfig {\n fields?: {\n [fieldName: string]: {\n type: string;\n value?: string | number | boolean;\n };\n };\n}\n\nexport type HailerProcess = Workflow;\n\nexport interface Workflow {\n _id: string;\n cid: string;\n name: string;\n description?: string;\n fields: { [fieldId: string]: any };\n phases: { [phase_id: string]: WorkflowPhase };\n phasesOrder: string[];\n\n /*\n defaultView: 'table' | 'kanban' | 'map' | 'calendar';\n fields: { [fieldId: string]: any };\n fieldsOrder: string[];\n phasesRemoved: string[];\n members: any;\n updated: number;\n coverImage?: string;\n createNewLabel?: string;\n enableAddedField: boolean;\n enableLinkedAnnouncements?: boolean;\n enableMapLocation?: boolean;\n enableUnlinkedMode?: boolean;\n enableMessenger?: boolean;\n allowGuests?: boolean;\n enableGuestEditing?: boolean;\n enableModifiedField?: boolean;\n enableOwnerField?: boolean;\n enableOwnerTeamField?: boolean;\n ownerTeamFieldTitle?: string;\n enableUniqueName?: boolean;\n enablePredefinedName?: boolean;\n enablePreselectedTeam?: boolean;\n initPhaseDescription?: string;\n locationRequired?: boolean;\n nameColumnText?: string;\n nameFunction?: string;\n nameFunctionEnabled?: boolean;\n nameFunctionVariables?: any;\n nameEditable?: boolean;\n personInCharge?: string;\n personInChargeLabel?: string;\n publicForm?: {\n key: string;\n active: boolean;\n creator: string;\n team_account: TeamAccount;\n followers: string;\n allowRead: boolean;\n enableMessaging?: boolean;\n }\n predefinedNamePrefix?: string;\n preselectedTeam?: TeamAccount;\n enableAttachments: boolean;\n nameFieldPlaceHolderText: string;\n order?: number;\n allowMultipleTags?: boolean;\n allowCustomTags?: boolean;\n requireFileTag?: boolean;\n documentTemplates?: any;\n color?: string;\n starred?: string[];\n isStarred?: boolean;\n createdActivities?: number;\n */\n}\n\nexport interface WorkflowPhase {\n _id: string;\n name: string;\n description?: string;\n /*\n followers: string[];\n created: number;\n uid?: string;\n members?: any[]\n fields?: string[]\n enableAnnouncement?: boolean,\n announcementFields?: string[];\n announcementRecipients?: string[];\n announcementFieldsOrder?: string[];\n announcementToOwner?: boolean;\n announcementToOwnerTeam?: boolean;\n isEndPoint?: boolean;\n possibleNextPhase?: string[];\n possibleNextPhaseSettings?: any;\n fieldOptions?: any;\n primaryNumericField?: string;\n webhooksEnabled?: boolean;\n webhookAdded?: boolean;\n webhookUpdated?: boolean;\n primaryDateField?: string | null | any;\n removed?: number;\n removedBy?: string;\n color?: string | null;\n */\n}\n\nexport type PermissionType = 'admin' | 'own' | 'ownteam' | 'any' | 'edit';\n\nexport interface Member {\n id: string;\n info: { [key: string]: string | number | boolean | null };\n permissions: PermissionType[];\n}\n\nexport interface InsightWorkflowSource {\n name: string;\n workflowId: string;\n fields: {\n name: string;\n fieldId?: string;\n /** Used for phaseLastMove meta */\n phaseId?: string;\n /** Activity information, like _id, created, phaseId etc. */\n meta?: string;\n }[];\n}\nexport interface InsightDoc {\n _id: string;\n name: string;\n sources: InsightWorkflowSource[];\n cid: string;\n /** User id of creator */\n uid: string;\n members: Member[];\n updated: number;\n public: boolean;\n /** Key for accessing Insight when set to public */\n publicKey?: string;\n /** sandboxed javascript with access to all activities in given workflows */\n function?: string;\n /** To be used with SQLite if we want to.... */\n query?: string;\n presets: {\n version: 1;\n name: string | 'default';\n options: any;\n }[];\n}\n\nexport type InsightPublic = Omit<InsightDoc, '_id'>;\n\n// These are separate so we can do different configs if necessary without it being a breaking change\nexport interface InsightData {\n headers: string[];\n rows: (string | number | null)[][];\n time: number;\n}\n\nexport interface InsightResponseAsObjectItem {\n [key: string]: any\n}\nexport type InsightResponseAsObjects = InsightResponseAsObjectItem[]\n\nexport interface KanbanListResponse {\n map: {\n [phaseId: string]: {\n activities: {\n _id: string,\n followers: string[],\n name: string,\n fields: { [key: string]: any }\n files: string[],\n primaryDateField: number,\n priority: number,\n }[]\n meta: {\n count: number,\n totalPrimaryNumericValue: number,\n primaryNumericFieldUnit: string | null\n }\n }\n }\n}\n\nexport interface KanbanLoadResponse {\n activity: {\n _id: string,\n followers: string[],\n name: string,\n fields: { [key: string]: any },\n files: string[],\n primaryDateField: number | null,\n priority: number,\n linkedFromCount: number\n },\n process: string,\n phase: string\n}\nexport interface ActivityListOptions {\n sortBy?: 'name' | 'created' | 'updated' | 'following' | 'owner' | 'team' | 'completedOn' | 'priority',\n sortOrder?: 'asc' | 'desc',\n limit?: number,\n skip?: number,\n includeUsers?: boolean,\n includeTeams?: boolean,\n includeHistory?: boolean\n filters?: any\n}\nexport interface ActivityCreateOptions {\n teamId?: string;\n fileIds?: string[];\n followerIds?: string[];\n location?: {\n label?: string;\n type: 'area' | 'point' | 'polyline';\n data: [{ lat: number, lng: number }];\n };\n discussionId?: string;\n phaseId?: string;\n returnDocument?: boolean;\n}\nexport interface ActivityKanbanListOptions {\n filter: {\n user?: {\n uid: string;\n field: string;\n },\n account?: string;\n team?: string;\n dates?: {\n field: string;\n start: number;\n end: number;\n };\n },\n search?: string;\n limit?: number;\n skip?: number;\n phase?: string;\n includeUsers?: boolean;\n includeTeams?: boolean;\n}\n\nexport interface HailerSettings {\n theme: 'light' | 'dark'\n preferredLanguages: string[];\n}\n\nexport interface HailerError {\n code: number,\n msg: string, \n debug: object\n}\n\nexport interface HailerApiInfo {\n /** Url of the Hailer instance hosting the API */\n hostUrl?: string;\n config?: HailerAppConfig;\n outside: boolean | null;\n}\n\nexport class HailerError extends Error {\n public code: number\n public msg: string\n public debug: object\n constructor(error: {code: number, msg: string, debug: object}) {\n super()\n\n this.code = error.code\n this.msg = error.msg\n this.debug = error.debug\n \n Object.setPrototypeOf(this, HailerError.prototype);\n }\n}\n\nexport interface HailerSignal {\n sig: string;\n meta: any;\n}\n", "import { Client } from '@wishcore/wish-rpc';\nimport { HailerError, User } from '../types';\n\nexport class UserApi {\n constructor(private client: Client) {}\n\n /** \n * Returns the specified user\n * \n * @param userId id of the Hailer user\n *\n * @returns Hailer user information\n *\n * @throws {HailerError} if request is incorrect\n */\n async get(userId: string): Promise<User> {\n try {\n const res = await this.client.requestAsync('v1.user.get', [userId]);\n return res;\n }\n catch (error: any) {\n throw new HailerError(error) \n }\n }\n\n /** \n * Returns the current user\n *\n * \n * @returns the current Hailer user information\n *\n * @throws {HailerError} if request is incorrect\n */\n async current(): Promise<User> {\n try {\n const res = await this.client.requestAsync('v1.user.current', []);\n return res;\n }\n catch (error: any) {\n throw new HailerError(error) \n }\n }\n\n /** \n * Lists all Hailer users from a workspace\n * \n * \n * @returns list of Hailer users in the workspace the app user is currently in\n *\n * @throws {HailerError} if request is incorrect\n */\n async list(): Promise<{ [key: string]: User }> {\n try {\n const users = await this.client.requestAsync('v1.user.list', []);\n return users;\n }\n catch (error: any) {\n throw new HailerError(error) \n }\n }\n}\n", "import { Client } from '@wishcore/wish-rpc';\nimport { ActivityKanbanListOptions, HailerError, KanbanListResponse, KanbanLoadResponse } from '../../types';\n\nexport class Kanban {\n constructor(private client: Client) { }\n \n /** \n * Lists all activities in a kanban grouped by phases\n * \n * @param processId the id of the process the kanban relates to\n * @param options ActivityKanbanListOptions\n *\n * @returns activities in kanban list format\n *\n * @throws {HailerError} if request fails\n */\n async list(processId: string, options?: ActivityKanbanListOptions): Promise<KanbanListResponse> {\n try {\n const res = await this.client.requestAsync('v1.activity.kanban.list', [processId, ...options ? [options] : []]);\n return res;\n } catch (error: any) {\n throw new HailerError(error) \n }\n }\n\n /** \n * Loads a single activity in kanban format\n * \n * @param activityId activityId of the wanted activity\n *\n * @returns activity in kanban format\n * \n * @throws {HailerError} if request is incorrect\n */\n async load(activityId: string): Promise<KanbanLoadResponse> {\n try {\n const res = await this.client.requestAsync('v1.activity.kanban.load', [activityId]);\n return res;\n } catch (error: any) {\n throw new HailerError(error) \n }\n }\n\n /** \n * Updates priority of activities in kanban\n * \n * @param activityId activityId of the wanted activity\n * @param priority new priority for the activity\n *\n * @throws {HailerError} if request is incorrect\n */\n async updatePriority(activityId: string, priority: number): Promise<void> {\n try {\n const res = await this.client.requestAsync('v1.activity.kanban.updatePriority', [{activityId, priority}]);\n return res;\n } catch (error: any) {\n throw new HailerError(error) \n }\n }\n\n}\n", "import { Client } from '@wishcore/wish-rpc';\nimport { ActivityCreateOptions, ActivityListOptions, Activity, HailerError } from '../types';\nimport { Kanban } from './activity/kanban';\n\nexport class ActivityApi {\n public kanban: Kanban\n constructor(private client: Client) {\n this.kanban = new Kanban(client)\n }\n\n /** \n * Lists all activities from the specified process and phase\n *\n * @param processId process from current network\n * @param phaseId phase in the process specified in processId\n * @param options ActivityListOptions\n *\n * @returns List of Hailer activities from process and phase filtered with supplied options\n *\n * @throws {HailerError} if request is incorrect\n */\n async list(processId: string, phaseId: string, options?: ActivityListOptions): Promise<Activity[]> {\n try {\n const res = await this.client.requestAsync('v1.activity.list', [processId, phaseId, options]);\n return res.activities;\n }\n catch (error: any) {\n throw new HailerError(error) \n }\n }\n\n /** \n * Gets single activity\n *\n * @param activityId activity Id of the process specified in processId\n * @param processId Process where the activityId is\n * @param phaseId Phase where the activityId is in process specified by processId\n * @param options options containing apiVersion\n *\n * @returns Hailer activity information or undefined if no activity is found\n *\n * @throws {HailerError} if request is incorrect\n */\n async get(activityId: string): Promise<Activity | undefined> {\n try {\n // Uses the same endpoint as getAll but only returns the activity in question\n return await this.client.requestAsync('v1.activity.get', [activityId]);\n }\n catch (error: any) {\n throw new HailerError(error) \n }\n }\n\n /** \n * Creates activities\n * \n * @param processId The process where the activity is created\n * @param activities new activities as objects\n * @param activities.name name of the activity\n * @param activities.fields fields of the activity\n * @param options ActivityCreateOptions\n *\n * @throws {HailerError} if request is incorrect\n */\n async create(processId: string, activities: { name: string; fields?: { [id: string]: string | number } }[], options?: ActivityCreateOptions ): Promise<Activity[]> {\n try {\n const res = await this.client.requestAsync('v1.activity.create', [processId, activities, ...options ? [options] : []]);\n return res;\n }\n catch (error: any) {\n throw new HailerError(error) \n }\n }\n\n /** \n * Updates activites\n *\n * Each activity has the following parameters \n * @param activities updated activity objects of an activity to edit\n * @param activities.name New name of the activity\n * @param activities.fields change values of fields, null removes current value\n * @param activities.phaseId New phase of the activity\n * @param options \n *\n * @returns The number of updated activities\n *\n * @throws {HailerError} if request is incorrect\n */\n async update(\n activities: { _id: string, name?: string, fields?: { [id: string]: string | number | null }, phaseId?: string }[],\n options: any\n ): Promise<number> {\n try {\n const res = await this.client.requestAsync('v1.activity.update', [activities, ...options ? [options] : []]);\n return res;\n }\n catch (error: any) {\n throw new HailerError(error) \n }\n }\n\n /** \n * Removes activities\n *\n * @param activities Ids of activities to be removed\n * @param options options containing apiVersion\n *\n * @returns The number of removed activities\n *\n * @throws {HailerError} if request is incorrect\n */\n async remove(activities: string[]): Promise<number> {\n try {\n const res = await this.client.requestAsync('v1.activity.remove', [activities]);\n return res;\n }\n catch (error: any) {\n throw new HailerError(error) \n }\n }\n}\n", "import { Client } from '@wishcore/wish-rpc';\nimport { HailerError, Workspace } from '../types';\n\nexport class WorkspaceApi {\n constructor(private client: Client) {}\n\n /** \n * Returns the current network\n *\n * @returns the Hailer Workspace information the user is currently in\n *\n * @throws {HailerError} if request is incorrect\n */\n async current(): Promise<Workspace> {\n try {\n const res = await this.client.requestAsync('v1.network.current', []);\n return res;\n }\n catch (error: any) {\n throw new HailerError(error) \n }\n }\n}\n", "import { Client } from '@wishcore/wish-rpc';\n\nexport type ActivityTabTypes =\n 'detail' |\n 'discussion' |\n 'files' |\n 'location' |\n 'linkedFrom' |\n 'options';\n\nexport class Activity {\n constructor(private client: Client) {}\n\n /** Opens an activity in Hailer sidebar */\n async open(\n /** Hailer Activity Id */\n activityId: string,\n options?: {\n /** Which tab to open in activity aside */\n tab?: ActivityTabTypes\n },\n ): Promise<void> {\n await this.client.requestAsync('v1.ui.activity.open', [activityId, ...options ? [options] : []]);\n }\n\n /** Opens activity creation view in Hailer sidebar */\n async create(\n processId: string,\n options?: {\n /** Activity name/title */\n name?: string,\n /** Prepopulate fields */\n fields?: {\n [fieldId: string]: number | string | { start: number, end: number },\n }\n }\n ): Promise<{ _id: string, name: string } | null> {\n return await this.client.requestAsync('v1.ui.activity.create', [processId, ...options ? [options] : []]);\n }\n}\n", "import { Client } from '@wishcore/wish-rpc';\n\nexport class Snackbar {\n constructor(private client: Client) {}\n\n /** \n * Opens a snackbar in Hailer\n * @param text the text displayed on the snackbar\n * @param buttonLabel the label for the button on the snackbar, for example 'OK'\n * @param duration the time the snackbar is visible in ms\n */\n async open(\n /** The text displayed on the snackbar */\n text: string,\n /** The label for the button on the snackbar, for example 'OK' */\n buttonLabel: string,\n /** The time the snackbar is visible in ms */\n duration?: number,\n ): Promise<void> {\n await this.client.requestAsync('v1.ui.snackbar.open', [text, buttonLabel, duration]);\n }\n}\n", "import { Client } from '@wishcore/wish-rpc';\n\nexport class Files {\n constructor(private client: Client) {}\n\n /**\n * Uploads a file to Hailer\n *\n * @param file file to be uploaded\n * @param publicFile is the file accessible outside of Hailer\n * @param options if file is public\n *\n * @returns File ID in Hailer as string\n */\n public async uploadFile(file: File, filename: string, options: { isPublic?: boolean }): Promise<string> {\n return await this.client.requestAsync('v1.ui.file.upload', [await this.toBase64(file), filename, !!options?.isPublic]);\n }\n\n private toBase64(file: File): Promise<string | ArrayBuffer> {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.readAsDataURL(file);\n reader.onload = () => resolve(reader.result ?? '');\n reader.onerror = reject;\n });\n }\n}\n", "import { Client } from '@wishcore/wish-rpc';\nimport { Activity } from './ui/activity';\nimport { Snackbar } from './ui/snackbar';\nimport { Files } from './ui/files';\n\n\nexport class Ui {\n public activity;\n public snackbar;\n public files;\n\n constructor(private client: Client) {\n this.activity = new Activity(client);\n this.snackbar = new Snackbar(client);\n this.files = new Files(client);\n }\n}\n", "import { Client } from '@wishcore/wish-rpc';\nimport { HailerError, HailerProcess } from '../types';\n\n/** @deprecated Use Workflow instead */\nexport class Process {\n constructor(private client: Client) {}\n \n /** \n * Lists all processes from a workspace\n *\n * @returns all Hailer processes in the workspace the app user is currently in \n *\n * @throws {HailerError} if request is incorrect\n */\n async list(): Promise<{ [key: string]: HailerProcess }> {\n try {\n const processes = await this.client.requestAsync('v1.process.list', []);\n return processes;\n }\n catch (error: any) {\n throw new HailerError(error) \n }\n }\n\n /** \n * Gets a single process from a workspace\n * \n * @param processId the id of the process in question\n * \n * @returns the specified Hailer process\n *\n * @throws {HailerError} if request is incorrect\n */\n async get(processId: string): Promise<HailerProcess> {\n try {\n const process = await this.client.requestAsync('v1.process.get', [processId]);\n return process;\n }\n catch (error: any) {\n throw new HailerError(error) \n }\n }\n\n /**\n * Gets an id of a field in a process by its name\n *\n * @param processId the id of the process in question\n * @param fieldName name of the field\n *\n * @returns the field id as string\n *\n * @throws {HailerError} if request is incorrect\n */\n async getFieldIdByName(processId: string, fieldName: string): Promise<string> {\n try {\n return Object.values((await this.get(processId))?.fields || {}).find(\n (field) => field.label.toLowerCase() === fieldName\n )?._id;\n }\n catch (error: any) {\n throw new HailerError(error)\n }\n }\n}\n", "// Changing this will be a breaking change\nexport const DEFAULT_API_VERSION = 1;\n\nexport const DEFAULT_ALLOWED_URLS = ['https://app.hailer.com', 'https://next.hailer.com', 'https://testapp.hailer.biz', 'https://app.hailer.biz', 'https://localhost:9443'];\n\nexport const DEFAULT_BACKEND_URL = 'https://api.hailer.com';\n\n/** Map of which backend to use depending on which frontend is hosting the app frame, be sure to fall back to production backend if no match */\nexport const publicBackendMap: { [host: string]: string } = {\n 'https://app.hailer.com': DEFAULT_BACKEND_URL,\n 'https://next.hailer.com': DEFAULT_BACKEND_URL,\n 'https://app.hailer.biz': 'https://api.hailer.biz',\n 'https://testapp.hailer.biz': 'https://testapi.hailer.biz',\n 'https://localhost:9443': 'http://localhost:1337',\n}\n", "import { Options } from '../../hailer-api';\nimport { HailerAppConfig } from '../../types';\n\nexport class App {\n constructor(private options: Options) {}\n\n /** \n * Read data from app API\n *\n * @param appId key of a specific insight\n *\n * @returns App manifest\n *\n * @throws {HailerError} if there is something wrong with the request or insight cannot be found\n * @throws {TypeError} if Hailer cannot be reached\n */\n async config(): Promise<HailerAppConfig> {\n const manifestFile = 'manifest.json';\n const location = window.location.origin + window.location.pathname;\n let manifestUrl = location + manifestFile;\n\n if (location.endsWith('/index.html')) {\n manifestUrl = location.slice(0, -10) + manifestFile;\n }\n\n const manifestContent = await (await fetch(manifestUrl)).text();\n\n const manifest = JSON.parse(manifestContent);\n\n const appId = manifest.appId;\n\n const res = await fetch(this.options.publicBackendUrl + '/api/v3/app/public', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify([appId])\n });\n\n return await res.json();\n }\n\n}\n", "import { Options } from '../../hailer-api';\nimport { FormCreateResponse, FormsData, FormsResponse, HailerError } from '../../types';\n\nexport class Form {\n constructor(private options: Options) {}\n\n /** \n * Read data from forms\n *\n * @param formsKey key of a form\n * @param options Overrides default request options, url defaults to https://api.hailer.com/api/v2/forms\n *\n * @returns forms data as object or null if form could not be found\n *\n * @throws {HailerError} if there is something wrong with the request or form cannot be found\n * @throws {TypeError} if Hailer cannot be reached\n */\n async data(formsKey: string): Promise<FormsResponse> {\n const res = await fetch(this.options.publicBackendUrl + '/api/v2/forms/process/get', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify([formsKey])\n });\n if (!res.ok) {\n throw new HailerError(await res.json())\n }\n return await res.json();\n }\n\n /** \n * Submits form to specified process\n *\n * @param formsKey key of a form\n * @param formsData Data to be sent to form endpoint\n * @param options Overrides default request options, url defaults to https://api.hailer.com/api/v2/forms\n *\n * @returns form creation data or null if form could not be created\n *\n * @throws {HailerError} if there is something wrong with the request or form cannot be found\n * @throws {TypeError} if Hailer cannot be reached\n */\n async submit(formsKey: string, formsData: FormsData): Promise<FormCreateResponse> {\n const res = await fetch(this.options.publicBackendUrl + '/api/v2/forms/activity/create', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify([formsKey, formsData])\n });\n if (!res.ok) {\n throw new HailerError(await res.json())\n }\n return await res.json();\n }\n}\n", "import { Options } from '../../hailer-api';\nimport { HailerError, InsightResponse, InsightResponseAsObjects, InsightResponseData } from '../../types';\n\nexport class InsightPublicApi {\n constructor(private options: Options) {}\n\n /** \n * Read data from insight API\n *\n * @param insightKey key of a specific insight\n * @param options Overrides default request options, url defaults to https://api.hailer.com/api/v3/insight/public\n *\n * @returns Insight data as object\n *\n * @throws {HailerError} if there is something wrong with the request or insight cannot be found\n * @throws {TypeError} if Hailer cannot be reached\n */\n async data(insightKey: string): Promise<InsightResponse> {\n const res = await fetch(this.options.publicBackendUrl + '/api/v3/insight/public', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify([insightKey])\n }\n );\n if (!res.ok) {\n throw new HailerError(await res.json())\n }\n return await res.json();\n }\n\n /** \n * Read data from insight API and return in an array of JavaScript objects\n *\n * @param insightKey key of a specific insight\n * @param options Overrides default request options, url defaults to https://api.hailer.com/api/v3/insight/public\n *\n * @returns Insight data as array of JavaScript objects\n *\n * @throws {HailerError} if there is something wrong with the request or insight cannot be found\n * @throws {TypeError} if Hailer cannot be reached\n */\n async dataAsObject(insightKey: string): Promise<InsightResponseAsObjects> {\n const res = await this.data(insightKey);\n\n const input: InsightResponseData = res.data;\n const data: InsightResponseAsObjects = [];\n \n input.rows.forEach((row) => {\n // The object keys are constructed dynamically, so any is necessary\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const object: any = {};\n input.headers.forEach((header, headerIndex) => {\n object[header] = row[headerIndex];\n });\n data.push(object);\n });\n return data;\n }\n}\n", "import { Options } from '../hailer-api';\nimport { App } from './public/app';\nimport { Form } from './public/form';\nimport { InsightPublicApi } from './public/insight';\n\n/**\n * This class is used to access Hailer public API even when the app is outside of Hailer\n */\nexport class HailerPublicApi {\n /** Allows accessing public insight methods. Used for reading data from Hailer even when app is outside of Hailer */\n public insight: InsightPublicApi;\n /** Allows accessing public forms methods. Used for sending data to Hailer even when app is outside of Hailer */\n public form: Form;\n /** Access public App information */\n public app: App;\n\n constructor(options: Options) {\n this.insight = new InsightPublicApi(options);\n this.form = new Form(options);\n this.app = new App(options);\n }\n}\n", "import { Client } from '@wishcore/wish-rpc';\nimport { HailerError, Workflow } from '../types';\n\nexport class WorkflowApi {\n constructor(private client: Client) {}\n \n /** \n * Lists all processes from a workspace\n *\n * @returns all Hailer processes in the workspace the app user is currently in \n *\n * @throws {HailerError} if request is incorrect\n */\n async list(): Promise<Workflow[]> {\n try {\n const processes = await this.client.requestAsync('v1.workflow.list', []);\n return processes;\n }\n catch (error: any) {\n throw new HailerError(error) \n }\n }\n\n /** \n * Gets a single process from a workspace\n * \n * @param processId the id of the process in question\n * \n * @returns the specified Hailer process\n *\n * @throws {HailerError} if request is incorrect\n */\n async get(processId: string): Promise<Workflow> {\n try {\n const process = await this.client.requestAsync('v1.workflow.get', [processId]);\n return process;\n }\n catch (error: any) {\n throw new HailerError(error) \n }\n }\n}\n", "import { Client } from '@wishcore/wish-rpc';\nimport { HailerAppConfig, HailerError } from '../types';\n\n/**\n * This class is used to access Hailer public API even when the app is outside of Hailer\n */\nexport class AppApi {\n\n constructor(private client: Client) {\n }\n\n config = {\n update: async (appId: string | undefined, config: HailerAppConfig): Promise<void> => {\n try {\n return await this.client.requestAsync('v1.app.config.update', [appId, config]);\n } catch (error: any) {\n console.log('Errorasd ', error);\n throw new HailerError(error);\n }\n }\n }\n}\n", "import { Client } from '@wishcore/wish-rpc';\nimport { HailerError, InsightData, InsightDoc } from '../types';\n\nexport class InsightApi {\n constructor(private client: Client) {}\n\n /** \n * Get Insight data \n * \n * @param insightId the id of the Insight the data is fetched from\n * \n * @returns data from the Insight\n *\n * @throws {HailerError} if request is incorrect\n */\n async data(insightId: string, options: { update?: true }): Promise<InsightData> {\n\n\n try {\n return await this.client.requestAsync('v1.insight.data', [insightId, ...options ? [options] : []]);\n }\n catch (error: any) {\n throw new HailerError(error) \n }\n }\n\n /** \n * Get Insight data \n * \n * \n * @returns data from the Insight\n *\n * @throws {HailerError} if request is incorrect\n */\n async list(): Promise<InsightDoc[]> {\n try {\n return await this.client.requestAsync('v1.insight.list', []);\n }\n catch (error: any) {\n throw new HailerError(error) \n }\n }\n\n /** \n * Get Insight data \n * \n * \n * @returns data from the Insight\n *\n * @throws {HailerError} if request is incorrect\n */\n async update(insightId: string, update: Partial<InsightDoc>): Promise<InsightDoc[]> {\n try {\n return await this.client.requestAsync('v1.insight.update', [insightId, update]);\n }\n catch (error: any) {\n throw new HailerError(error) \n }\n } \n}\n\n"],
5
- "mappings": "qnCAMA,IAAaA,EAAb,KAAmB,CAKf,YAAoBC,EAAuCC,EAAsB,CAA7D,KAAA,MAAAD,EAJZ,KAAA,SAAuB,CAAA,EACvB,KAAA,GAAK,EACL,KAAA,IAAM,MAGPC,GAAQA,EAAK,MACZ,KAAK,IAAMA,EAAK,IAExB,CAEA,SAAO,CACH,KAAK,SAAW,KAChB,KAAK,MAAQ,IACjB,CAEA,gBAAgBC,EAAG,CAEf,IAAMC,EAAM,CAAC,EAAED,EAAI,KAAOA,EAAI,KAAOA,EAAI,KAEnCE,EAAKF,EAAI,KAAOA,EAAI,KAAOA,EAAI,KAAOA,EAAI,IAE1CG,EAAU,KAAK,SAASD,CAAE,EAC5BE,EAEJ,GAAGD,GAAW,OAAOA,EAAQ,IAAO,WAAY,CAC5C,IAAIE,EACDL,EAAI,IAEHG,EAAQ,GAAG,KAAKA,EAAQ,QAAS,KAAM,KAAM,EAAI,EAE9CA,EAAQ,SACP,QAAQ,IAAI,qDAAqD,GAGjEE,EAAML,EAAI,IAAMA,EAAI,KAAO,KAC3BI,EAASD,EAAQ,GAAG,KAAKA,EAAQ,QAASE,EAAKL,EAAI,KAAMC,CAAG,GAKxE,OAAGA,GAEC,OAAO,KAAK,SAASC,CAAE,EAGpBE,CACX,CAEM,aAAaE,EAAYC,EAAW,0CACtC,OAAO,IAAI,QAAQ,CAACC,EAASC,IAAU,CACnC,KAAK,QAAQH,EAAIC,EAAM,CAACF,EAAKK,IAAQ,CACjC,GAAIL,EACA,OAAOI,EAAOC,CAAI,EAGtBF,EAAQE,CAAI,CAChB,CAAC,CACL,CAAC,CACL,CAAC,EAED,QAAQJ,EAAYC,EAAaI,EAAG,CAChC,KAAK,KAEL,IAAMX,EAAsB,CAAE,GAAAM,CAAE,EAEhC,OAAK,MAAM,QAAQC,CAAI,IACnBP,EAAI,KAAOO,GAGXI,IAEAX,EAAI,GAAK,KAAK,GACd,KAAK,SAASA,EAAI,EAAE,EAAI,CACpB,GAAAW,EACA,QAAS,CACL,GAAIX,EAAI,GACR,OAAQ,IAAK,CACT,YAAcE,GACH,IAAK,CACL,KAAK,SAASA,CAAE,GACf,QAAQ,IACJ,iFACAA,EAAI,KAAK,SAASA,CAAE,CAAC,CAGjC,GACDF,EAAI,EAAE,EAAG,IAAI,EAChB,KAAK,SAASA,EAAI,EAAE,EAAE,SAAW,GACjC,KAAK,MAAM,CAAE,IAAKA,EAAI,EAAE,CAAE,CAC9B,EACA,KAAOU,GACI,KAAK,MAAM,CAAE,IAAKV,EAAI,GAAI,KAAMU,CAAI,CAAE,KAM7D,KAAK,MAAMV,CAAG,EAEPA,EAAI,IAAM,IACrB,CAEA,KAAKE,EAAYQ,EAAI,CACjB,KAAK,MAAM,CAAE,KAAMR,EAAI,KAAAQ,CAAI,CAAE,CACjC,CAEA,IAAIR,EAAU,CACV,KAAK,MAAM,CAAE,IAAKA,CAAE,CAAE,CAC1B,GA7GJU,EAAA,OAAAf,8FC8BA,IAAMgB,EAAQ,QAAQ,IAETC,EAAb,KAAmB,CAUf,YAAaC,EAAmB,CATxB,KAAA,QAAU,CAAA,EACV,KAAA,QAAU,CAAA,EACV,KAAA,SAAuB,CAAA,EACvB,KAAA,gBAAkB,EAElB,KAAA,UAAY,EAEZ,KAAA,SAAW,EAGZA,GACC,KAAK,cAAcA,CAAO,CAElC,CAEA,SAAO,CACH,QAAUC,KAAK,KAAK,SAAU,CAC1B,QAAUC,KAAK,KAAK,SAASD,CAAC,EACtB,OAAO,KAAK,SAASA,CAAC,EAAEC,CAAC,EAAE,KAAQ,YACnC,KAAK,SAASD,CAAC,EAAEC,CAAC,EAAE,IAAG,EAG/B,OAAO,KAAK,SAASD,CAAC,EAE9B,CAEA,cAAcE,EAAC,CACX,IAAMC,EAAO,GACb,KAAK,WAAWA,EAAMD,CAAC,CAC3B,CAEA,WAAWC,EAAcD,EAAY,CAEjC,IAAME,EAASD,EAAOA,EAAO,IAAM,GAEnC,QAAW,KAAKD,EACZ,GAAI,IAAM,KAEH,GAAI,EAAE,UAAU,EAAG,CAAC,IAAM,KACzBA,EAAE,IAAM,CAAC,EAGT,GAAI,OAAOA,EAAE,CAAC,GAAM,WAAY,CAC5B,IAAMG,EAAKH,EAAE,IAAM,CAAC,EAAE,MAAQ,EAC9BA,EAAE,IAAM,CAAC,EAAE,SAAWE,EAASC,EAE/B,GAAI,CACA,KAAK,QAAQD,EAASC,CAAE,EAAIH,EAAE,IAAM,CAAC,EACrC,KAAK,QAAQE,EAASC,CAAE,EAAIH,EAAE,CAAC,QAC1BI,EAAP,CACE,QAAQ,IAAI,WAAYA,CAAC,QAEvB,OAAOJ,EAAE,CAAC,GAAM,UAGtB,KAAK,WAAYE,EAAS,EAAGF,EAAE,CAAC,CAAC,EAOrD,CAEA,YAAYK,EAAMC,EAASC,EAAE,CACzB,IAAMC,EAAS,CAAA,EAEf,SAASC,EAAKC,EAAGC,EAAM,CACnB,IAAMC,EAAI,CAAA,EACV,QAAUb,KAAKW,EACRC,EAAOZ,CAAC,IACXa,EAAEb,CAAC,EAAIW,EAAEX,CAAC,GAEd,OAAOa,CACX,CAEA,IAAMD,EAAS,CAAE,SAAU,EAAI,EAG/B,QAAWb,KAAK,KAAK,QACjBU,EAAOV,CAAC,EAAIW,EAAK,KAAK,QAAQX,CAAC,EAAGa,CAAM,EAE5CJ,EAAG,KAAMC,CAAM,CACnB,CAEA,cAAcK,EAAgB,CAC1B,QAAUf,KAAK,KAAK,SAASe,CAAQ,EAC7B,OAAO,KAAK,SAASA,CAAQ,EAAEf,CAAC,EAAE,KAAQ,YAC1C,KAAK,SAASe,CAAQ,EAAEf,CAAC,EAAE,IAAG,EAGlC,OAAO,KAAK,SAASe,CAAQ,EAAEf,CAAC,CAExC,CAEA,UAAQ,CACJ,QAAUA,KAAK,KAAK,SAChB,QAAUC,KAAK,KAAK,SAASD,CAAC,EACtB,OAAO,KAAK,SAASA,CAAC,EAAEC,CAAC,EAAE,KAAQ,YACnC,KAAK,SAASD,CAAC,EAAEC,CAAC,EAAE,IAAG,EAG3B,OAAO,KAAK,SAASD,CAAC,EAAEC,CAAC,CAGrC,CAEA,MAAMe,EAAqBC,EAAST,EAASO,EAAgB,CACzD,GAAG,OAAOA,GAAa,SAKvB,GAAI,CACA,GAAIC,EAAI,KAAO,CACR,KAAK,SAASD,CAAQ,GAAK,KAAK,SAASA,CAAQ,EAAEC,EAAI,IAAI,GAC1D,KAAK,UAAUA,EAAKC,EAAS,KAAK,SAASF,CAAQ,EAAEC,EAAI,IAAI,EAAE,QAASD,CAAQ,EAEpF,OAEJ,GAAIC,EAAI,IAAM,CACP,KAAK,SAASD,CAAQ,GAAK,KAAK,SAASA,CAAQ,EAAEC,EAAI,GAAG,GACzD,KAAK,UAAUA,EAAKC,EAAS,KAAK,SAASF,CAAQ,EAAEC,EAAI,GAAG,EAAE,QAASD,CAAQ,EAEnF,OAEJ,GAAIC,EAAI,IAAM,CACV,IAAME,EAAKF,EAAI,IAGf,GAAG,KAAK,SAASD,CAAQ,GAAK,KAAK,SAASA,CAAQ,EAAEG,CAAE,EAAG,CACnD,OAAO,KAAK,SAASH,CAAQ,EAAEG,CAAE,EAAE,KAAQ,YAC3C,KAAK,SAASH,CAAQ,EAAEG,CAAE,EAAE,IAAG,EAEnCD,EAAQ,CAAE,IAAKC,CAAE,CAAE,EACnB,OAAO,KAAK,SAASH,CAAQ,EAAEG,CAAE,EACjC,OAEJ,GAAI,CAAC,KAAK,SAASH,CAAQ,EAAEG,CAAE,EAC3B,OAEA,OAAO,KAAK,SAASH,CAAQ,EAAEG,CAAE,EAAE,KAAQ,YAC3C,KAAK,SAASA,CAAE,EAAE,IAAG,EAEzB,OAGJ,GAAKF,EAAI,KAAO,UAAY,CACxB,KAAK,YAAYA,EAAI,KAAMR,EAAS,SAASW,EAAKC,EAAI,CAClDH,EAAQ,CAAE,IAAKD,EAAI,GAAI,KAAMI,CAAI,CAAE,CACvC,CAAC,EACD,OAEJ,GAAK,OAAO,KAAK,QAAQJ,EAAI,EAAE,EAAM,IAAc,CAE/CC,EAAQ,CAAE,IAAKD,EAAI,GAAI,KAAM,CAAE,KAAM,IAAK,IAAK,oBAAoBA,EAAI,EAAE,CAAE,CAAE,EAC7E,OAGJ,KAAK,UAAUA,EAAKC,EAAST,EAASO,CAAQ,QAC1CT,EAAN,CACET,EAAM,iCAAkCmB,EAAI,GAAIV,EAAGA,EAAE,KAAK,EAC1D,GAAI,CACA,QAAQ,IAAI,mBAAoBA,EAAE,KAAK,EACvCW,EAAQ,CAAE,IAAKD,EAAI,GAAI,IAAKA,EAAI,GAAI,KAAM,mBAAmBA,EAAI,GAAG,KAAKV,EAAE,SAAQ,EAAI,MAAOA,EAAE,KAAK,CAAE,QACnGA,EAAN,CACEW,EAAQ,CAAE,IAAKD,EAAI,GAAI,KAAM,MAAO,OAAQV,EAAE,SAAQ,CAAE,CAAE,GAGtE,CAEA,KAAKe,EAAYD,EAAI,CACjB,QAAWE,KAAU,KAAK,SACtB,GAAI,KAAK,SAASA,CAAM,GACpB,QAAWJ,KAAM,KAAK,SAASI,CAAM,EACjC,GAAI,KAAK,SAASA,CAAM,EAAEJ,CAAE,EAAE,KAAOG,EAAI,CACrC,GAAM,CAAE,KAAAE,CAAI,EAAK,KAAK,SAASD,CAAM,EAAEJ,CAAE,EACzCK,EAAK,CAAE,IAAKL,EAAI,KAAAE,CAAI,CAAE,GAK1C,CAEA,UAAUJ,EAAqBC,EAAST,EAASO,EAAQ,CAGrD,GAFA,EAAE,KAAK,UAEH,CAAC,KAAK,SAASA,CAAQ,EACvB,OAAO,QAAQ,IAAI,wDAAwD,EAG/E,GAAGC,EAAI,KAAM,CAET,IAAMQ,EAAM,KAAK,SAAST,CAAQ,EAAEC,EAAI,IAAI,EAI5C,GAAIA,EAAI,OAAS,KAAM,CACnB,QAAQ,IAAI,oBAAqBA,CAAG,EACpC,OAGJQ,EAAI,KAAKR,EAAI,IAAI,EAEjB,OAGJ,GAAGA,EAAI,IAAK,CAER,IAAMQ,EAAM,KAAK,SAAST,CAAQ,EAAEC,EAAI,GAAG,EAG3C,GAAI,CACA,KAAK,QAAQQ,EAAI,EAAE,EAAE,KACjB,KAAK,SAAST,CAAQ,EAAEC,EAAI,GAAG,EAC/BA,EAAI,KACJ,CACI,KAAOI,GAAQ,CACR,OAAOI,EAAI,KAAQ,YAAcA,EAAI,IAAG,EACxC,KAAK,SAAST,CAAQ,EAAEC,EAAI,GAAG,GAC9B,OAAO,KAAK,SAASD,CAAQ,EAAEC,EAAI,GAAG,EAE1CC,EAAQ,CAAE,IAAKD,EAAI,IAAK,KAAMI,CAAI,CAAE,CACxC,EACA,KAAOA,IACC,KAAK,SAASL,CAAQ,EAAEC,EAAI,GAAG,GAC5B,OAAOQ,EAAI,KAAQ,YAAcA,EAAI,IAAG,EAExCP,EAAQ,CAAE,IAAKD,EAAI,IAAK,KAAMI,CAAI,CAAE,GAE/C,MAAQA,GAAQ,CACT,OAAOI,EAAI,KAAQ,YAAcA,EAAI,IAAG,EAC3C,OAAO,KAAK,SAAST,CAAQ,EAAEC,EAAI,GAAG,EACtCC,EAAQ,CAAE,IAAKD,EAAI,IAAK,KAAMI,CAAI,CAAE,CACxC,EACA,MAAQA,GAAQ,CACT,OAAOI,EAAI,KAAQ,YAAcA,EAAI,IAAG,EAC3C,OAAO,KAAK,SAAST,CAAQ,EAAEC,EAAI,GAAG,EACtCC,EAAQ,CAAE,IAAKD,EAAI,GAAG,CAAE,CAC5B,GAEJR,CAAO,QACPF,EAAN,CACE,QAAQ,IAAI,oCAAqCU,EAAI,GAAIA,EAAI,KAAMV,EAAE,KAAK,EAC1E,OAAO,KAAK,SAASS,CAAQ,EAAEC,EAAI,GAAG,EACtCC,EAAQ,CAAE,IAAKD,EAAI,IAAK,KAAM,CAAE,IAAK,kCAAkCA,EAAI,GAAI,KAAM,GAAG,CAAE,CAAE,EAGhG,OAGJ,GAAG,OAAOA,EAAI,GAAO,IAAa,CAE9B,IAAMS,EAAS,CAAA,EAEf,KAAK,QAAQT,EAAI,EAAE,EAAE,KACjBS,EACA,CAAE,KAAMT,EAAI,IAAI,EAChB,CACI,KAAM,IAAK,CAAGnB,EAAM,qCAAqCmB,EAAI,GAAG,cAAc,CAAG,EACjF,KAAM,IAAK,CAAGnB,EAAM,qCAAqCmB,EAAI,GAAG,cAAc,CAAG,EACjF,MAAO,IAAK,CAAGnB,EAAM,0CAA0CmB,EAAI,GAAG,cAAc,CAAG,EACvF,MAAO,IAAK,CAAGnB,EAAM,0BAA0BmB,EAAI,GAAG,cAAc,CAAG,GAE3ER,CAAO,MACR,CAEH,IAAMiB,EAAS,CACX,GAAIT,EAAI,GACR,GAAIA,EAAI,GACR,KAAMA,EAAI,KACV,QAAAR,EACA,IAAK,KACL,KAAMS,GAGN,KAAK,SAASF,CAAQ,IAAK,KAAK,SAASA,CAAQ,EAAI,CAAA,GACtD,KAAK,SAASA,CAAQ,EAAEC,EAAI,EAAE,IAC7B,QAAQ,IACJ,yHACAD,EACA,MAAOC,EACP,eAAgB,IAAI,MAAK,EAAG,KAAK,EAGlC,OAAO,KAAK,SAASD,CAAQ,EAAEC,EAAI,EAAE,EAAE,KAAQ,YAC9C,KAAK,SAASD,CAAQ,EAAEC,EAAI,EAAE,EAAE,IAAG,EAEvC,OAAO,KAAK,SAASD,CAAQ,EAAEC,EAAI,EAAE,EACrC,QAAQ,IAAI,oDAAoD,GAEpE,KAAK,SAASD,CAAQ,EAAEC,EAAI,EAAE,EAAIS,EAGlC,GAAI,CACA,KAAK,QAAQT,EAAI,EAAE,EAAE,KACjBS,EACA,CAAE,KAAMT,EAAI,IAAI,EAChB,CACI,KAAOI,GAAQ,CACP,OAAOK,EAAO,KAAQ,YAAcA,EAAO,IAAG,EAC9C,KAAK,SAASV,CAAQ,EAAEC,EAAI,EAAE,GAC9B,OAAO,KAAK,SAASD,CAAQ,EAAEC,EAAI,EAAE,EAEzCC,EAAQ,CAAE,IAAKD,EAAI,GAAI,KAAMI,CAAI,CAAE,CACvC,EACA,KAAOA,IACE,KAAK,SAASL,CAAQ,EAAEC,EAAI,EAAE,GAC5B,OAAOS,EAAO,KAAQ,YAAcA,EAAO,IAAG,EAE9CR,EAAQ,CAAE,IAAKD,EAAI,GAAI,KAAMI,CAAI,CAAE,GAE9C,MAAQA,GAAQ,CACR,OAAOK,EAAO,KAAQ,YAAcA,EAAO,IAAG,EAClD,OAAO,KAAK,SAASV,CAAQ,EAAEC,EAAI,EAAE,EACrCC,EAAQ,CAAE,IAAKD,EAAI,GAAI,KAAMI,CAAI,CAAE,CACvC,EACA,MAAQA,GAAQ,CACR,OAAOK,EAAO,KAAQ,YAAcA,EAAO,IAAG,EAClD,OAAO,KAAK,SAASV,CAAQ,EAAEC,EAAI,EAAE,EACrCC,EAAQ,CAAE,IAAKD,EAAI,EAAE,CAAE,CAC3B,GAEJR,CAAO,QACPF,EAAN,CACE,QAAQ,IAAI,oCAAqCU,EAAI,GAAIA,EAAI,KAAMV,EAAE,KAAK,EAC1E,OAAO,KAAK,SAASS,CAAQ,EAAEC,EAAI,EAAE,EACrCC,EAAQ,CAAE,IAAKD,EAAI,GAAI,KAAM,CAAE,IAAK,kCAAkCA,EAAI,GAAI,KAAM,GAAG,CAAE,CAAE,GAGvG,CAoCA,MAAMD,EAAgB,CAClB,QAAWf,KAAK,KAAK,SAASe,CAAQ,EAC9B,OAAO,KAAK,SAASA,CAAQ,EAAEf,CAAC,EAAE,KAAQ,YAC1C,KAAK,SAASe,CAAQ,EAAEf,CAAC,EAAE,IAAG,EAGlC,OAAO,KAAK,SAASe,CAAQ,EAAEf,CAAC,EAGpC,OAAO,KAAK,SAASe,CAAQ,CACjC,CAEA,MAAI,CACA,IAAMA,EAAW,EAAE,KAAK,gBACxB,YAAK,SAASA,CAAQ,EAAI,CAAA,EACnBA,CACX,GA/XJW,EAAA,OAAA5B,8YCPA6B,EAAA,IAAAC,CAAA,EACAD,EAAA,IAAAC,CAAA,IChCA,IAAAC,EAAuB,SCsZhB,IAAMC,EAAN,cAA0B,KAAM,CAInC,YAAYC,EAAmD,CAC3D,MAAM,EAEN,KAAK,KAAOA,EAAM,KAClB,KAAK,IAAMA,EAAM,IACjB,KAAK,MAAQA,EAAM,MAEnB,OAAO,eAAe,KAAMD,EAAY,SAAS,CACrD,CACJ,EChaO,IAAME,EAAN,KAAc,CACjB,YAAoBC,EAAgB,CAAhB,YAAAA,CAAiB,CAW/B,IAAIC,EAA+B,QAAAC,EAAA,sBACrC,GAAI,CAEA,OADY,MAAM,KAAK,OAAO,aAAa,cAAe,CAACD,CAAM,CAAC,CAEtE,OACOE,EAAP,CACI,MAAM,IAAIC,EAAYD,CAAK,CAC/B,CACJ,GAUM,SAAyB,QAAAD,EAAA,sBAC3B,GAAI,CAEA,OADY,MAAM,KAAK,OAAO,aAAa,kBAAmB,CAAC,CAAC,CAEpE,OACOC,EAAP,CACI,MAAM,IAAIC,EAAYD,CAAK,CAC/B,CACJ,GAUM,MAAyC,QAAAD,EAAA,sBAC3C,GAAI,CAEA,OADc,MAAM,KAAK,OAAO,aAAa,eAAgB,CAAC,CAAC,CAEnE,OACOC,EAAP,CACI,MAAM,IAAIC,EAAYD,CAAK,CAC/B,CACJ,GACJ,ECzDO,IAAME,EAAN,KAAa,CAChB,YAAoBC,EAAgB,CAAhB,YAAAA,CAAkB,CAYhC,KAAKC,EAAmBC,EAAkE,QAAAC,EAAA,sBAC5F,GAAI,CAEA,OADY,MAAM,KAAK,OAAO,aAAa,0BAA2B,CAACF,EAAW,GAAGC,EAAU,CAACA,CAAO,EAAI,CAAC,CAAC,CAAC,CAElH,OAASE,EAAP,CACE,MAAM,IAAIC,EAAYD,CAAK,CAC/B,CACJ,GAWM,KAAKE,EAAiD,QAAAH,EAAA,sBACxD,GAAI,CAEA,OADY,MAAM,KAAK,OAAO,aAAa,0BAA2B,CAACG,CAAU,CAAC,CAEtF,OAASF,EAAP,CACE,MAAM,IAAIC,EAAYD,CAAK,CAC/B,CACJ,GAUM,eAAeE,EAAoBC,EAAiC,QAAAJ,EAAA,sBACtE,GAAI,CAEA,OADY,MAAM,KAAK,OAAO,aAAa,oCAAqC,CAAC,CAAC,WAAAG,EAAY,SAAAC,CAAQ,CAAC,CAAC,CAE5G,OAASH,EAAP,CACE,MAAM,IAAIC,EAAYD,CAAK,CAC/B,CACJ,GAEJ,ECxDO,IAAMI,EAAN,KAAkB,CAErB,YAAoBC,EAAgB,CAAhB,YAAAA,EAChB,KAAK,OAAS,IAAIC,EAAOD,CAAM,CACnC,CAaM,KAAKE,EAAmBC,EAAiBC,EAAoD,QAAAC,EAAA,sBAC/F,GAAI,CAEA,OADY,MAAM,KAAK,OAAO,aAAa,mBAAoB,CAACH,EAAWC,EAASC,CAAO,CAAC,GACjF,UACf,OACOE,EAAP,CACI,MAAM,IAAIC,EAAYD,CAAK,CAC/B,CACJ,GAcM,IAAIE,EAAmD,QAAAH,EAAA,sBACzD,GAAI,CAEA,OAAO,MAAM,KAAK,OAAO,aAAa,kBAAmB,CAACG,CAAU,CAAC,CACzE,OACOF,EAAP,CACI,MAAM,IAAIC,EAAYD,CAAK,CAC/B,CACJ,GAaM,OAAOJ,EAAmBO,EAA4EL,EAAuD,QAAAC,EAAA,sBAC/J,GAAI,CAEA,OADY,MAAM,KAAK,OAAO,aAAa,qBAAsB,CAACH,EAAWO,EAAY,GAAGL,EAAU,CAACA,CAAO,EAAI,CAAC,CAAC,CAAC,CAEzH,OACOE,EAAP,CACI,MAAM,IAAIC,EAAYD,CAAK,CAC/B,CACJ,GAgBM,OACFG,EACAL,EACe,QAAAC,EAAA,sBACf,GAAI,CAEA,OADY,MAAM,KAAK,OAAO,aAAa,qBAAsB,CAACI,EAAY,GAAGL,EAAU,CAACA,CAAO,EAAI,CAAC,CAAC,CAAC,CAE9G,OACOE,EAAP,CACI,MAAM,IAAIC,EAAYD,CAAK,CAC/B,CACJ,GAYM,OAAOG,EAAuC,QAAAJ,EAAA,sBAChD,GAAI,CAEA,OADY,MAAM,KAAK,OAAO,aAAa,qBAAsB,CAACI,CAAU,CAAC,CAEjF,OACOH,EAAP,CACI,MAAM,IAAIC,EAAYD,CAAK,CAC/B,CACJ,GACJ,ECrHO,IAAMI,EAAN,KAAmB,CACtB,YAAoBC,EAAgB,CAAhB,YAAAA,CAAiB,CAS/B,SAA8B,QAAAC,EAAA,sBAChC,GAAI,CAEA,OADY,MAAM,KAAK,OAAO,aAAa,qBAAsB,CAAC,CAAC,CAEvE,OACOC,EAAP,CACI,MAAM,IAAIC,EAAYD,CAAK,CAC/B,CACJ,GACJ,ECZO,IAAME,EAAN,KAAe,CAClB,YAAoBC,EAAgB,CAAhB,YAAAA,CAAiB,CAG/B,KAEFC,EACAC,EAIa,QAAAC,EAAA,sBACb,MAAM,KAAK,OAAO,aAAa,sBAAuB,CAACF,EAAY,GAAGC,EAAU,CAACA,CAAO,EAAI,CAAC,CAAC,CAAC,CACnG,GAGM,OACFE,EACAF,EAQ6C,QAAAC,EAAA,sBAC7C,OAAO,MAAM,KAAK,OAAO,aAAa,wBAAyB,CAACC,EAAW,GAAGF,EAAU,CAACA,CAAO,EAAI,CAAC,CAAC,CAAC,CAC3G,GACJ,ECrCO,IAAMG,EAAN,KAAe,CAClB,YAAoBC,EAAgB,CAAhB,YAAAA,CAAiB,CAQ/B,KAEFC,EAEAC,EAEAC,EACa,QAAAC,EAAA,sBACb,MAAM,KAAK,OAAO,aAAa,sBAAuB,CAACH,EAAMC,EAAaC,CAAQ,CAAC,CACvF,GACJ,ECnBO,IAAME,EAAN,KAAY,CACf,YAAoBC,EAAgB,CAAhB,YAAAA,CAAiB,CAWxB,WAAWC,EAAYC,EAAkBC,EAAkD,QAAAC,EAAA,sBACpG,OAAO,MAAM,KAAK,OAAO,aAAa,oBAAqB,CAAC,MAAM,KAAK,SAASH,CAAI,EAAGC,EAAU,CAAC,EAACC,GAAA,MAAAA,EAAS,SAAQ,CAAC,CACzH,GAEQ,SAASF,EAA2C,CACxD,OAAO,IAAI,QAAQ,CAACI,EAASC,IAAW,CACpC,IAAMC,EAAS,IAAI,WACnBA,EAAO,cAAcN,CAAI,EACzBM,EAAO,OAAS,IAAG,CAtB/B,IAAAC,EAsBkC,OAAAH,GAAQG,EAAAD,EAAO,SAAP,KAAAC,EAAiB,EAAE,GACjDD,EAAO,QAAUD,CACrB,CAAC,CACL,CACJ,ECpBO,IAAMG,EAAN,KAAS,CAKZ,YAAoBC,EAAgB,CAAhB,YAAAA,EAChB,KAAK,SAAW,IAAIC,EAASD,CAAM,EACnC,KAAK,SAAW,IAAIE,EAASF,CAAM,EACnC,KAAK,MAAQ,IAAIG,EAAMH,CAAM,CACjC,CACJ,ECZO,IAAMI,EAAN,KAAc,CACjB,YAAoBC,EAAgB,CAAhB,YAAAA,CAAiB,CAS/B,MAAkD,QAAAC,EAAA,sBACpD,GAAI,CAEA,OADkB,MAAM,KAAK,OAAO,aAAa,kBAAmB,CAAC,CAAC,CAE1E,OACOC,EAAP,CACI,MAAM,IAAIC,EAAYD,CAAK,CAC/B,CACJ,GAWM,IAAIE,EAA2C,QAAAH,EAAA,sBACjD,GAAI,CAEA,OADgB,MAAM,KAAK,OAAO,aAAa,iBAAkB,CAACG,CAAS,CAAC,CAEhF,OACOF,EAAP,CACI,MAAM,IAAIC,EAAYD,CAAK,CAC/B,CACJ,GAYM,iBAAiBE,EAAmBC,EAAoC,QAAAJ,EAAA,sBArDlF,IAAAK,EAAAC,EAsDQ,GAAI,CACA,OAAOA,EAAA,OAAO,SAAQD,EAAA,MAAM,KAAK,IAAIF,CAAS,IAAxB,YAAAE,EAA4B,SAAU,CAAC,CAAC,EAAE,KAC3DE,GAAUA,EAAM,MAAM,YAAY,IAAMH,CAC7C,IAFO,YAAAE,EAEJ,GACP,OACOL,EAAP,CACI,MAAM,IAAIC,EAAYD,CAAK,CAC/B,CACJ,GACJ,EC5DO,IAAMO,EAAuB,CAAC,yBAA0B,0BAA2B,6BAA8B,yBAA0B,wBAAwB,EAE7JC,EAAsB,yBAGtBC,EAA+C,CACxD,yBAA0BD,EAC1B,0BAA2BA,EAC3B,yBAA0B,yBAC1B,6BAA8B,6BAC9B,yBAA0B,uBAC9B,ECXO,IAAME,EAAN,KAAU,CACb,YAAoBC,EAAkB,CAAlB,aAAAA,CAAmB,CAYjC,QAAmC,QAAAC,EAAA,sBACrC,IAAMC,EAAe,gBACfC,EAAW,OAAO,SAAS,OAAS,OAAO,SAAS,SACtDC,EAAcD,EAAWD,EAEzBC,EAAS,SAAS,aAAa,IAC/BC,EAAcD,EAAS,MAAM,EAAG,GAAG,EAAID,GAG3C,IAAMG,EAAkB,MAAO,MAAM,MAAMD,CAAW,GAAG,KAAK,EAIxDE,EAFW,KAAK,MAAMD,CAAe,EAEpB,MAUvB,OAAO,MARK,MAAM,MAAM,KAAK,QAAQ,iBAAmB,qBAAsB,CAC1E,OAAQ,OACR,QAAS,CACL,eAAgB,kBACpB,EACA,KAAM,KAAK,UAAU,CAACC,CAAK,CAAC,CAChC,CAAC,GAEgB,KAAK,CAC1B,GAEJ,ECvCO,IAAMC,EAAN,KAAW,CACd,YAAoBC,EAAkB,CAAlB,aAAAA,CAAmB,CAajC,KAAKC,EAA0C,QAAAC,EAAA,sBACjD,IAAMC,EAAM,MAAM,MAAM,KAAK,QAAQ,iBAAmB,4BAA6B,CACjF,OAAQ,OACR,QAAS,CACL,eAAgB,kBACpB,EACA,KAAM,KAAK,UAAU,CAACF,CAAQ,CAAC,CACnC,CAAC,EACD,GAAI,CAACE,EAAI,GACL,MAAM,IAAIC,EAAY,MAAMD,EAAI,KAAK,CAAC,EAE1C,OAAO,MAAMA,EAAI,KAAK,CAC1B,GAcM,OAAOF,EAAkBI,EAAmD,QAAAH,EAAA,sBAC9E,IAAMC,EAAM,MAAM,MAAM,KAAK,QAAQ,iBAAmB,gCAAiC,CACrF,OAAQ,OACR,QAAS,CACL,eAAgB,kBACpB,EACA,KAAM,KAAK,UAAU,CAACF,EAAUI,CAAS,CAAC,CAC9C,CAAC,EACD,GAAI,CAACF,EAAI,GACL,MAAM,IAAIC,EAAY,MAAMD,EAAI,KAAK,CAAC,EAE1C,OAAO,MAAMA,EAAI,KAAK,CAC1B,GACJ,ECrDO,IAAMG,EAAN,KAAuB,CAC1B,YAAoBC,EAAkB,CAAlB,aAAAA,CAAmB,CAajC,KAAKC,EAA8C,QAAAC,EAAA,sBACrD,IAAMC,EAAM,MAAM,MAAM,KAAK,QAAQ,iBAAmB,yBAA0B,CAC9E,OAAQ,OACR,QAAS,CACL,eAAgB,kBACpB,EACA,KAAM,KAAK,UAAU,CAACF,CAAU,CAAC,CACrC,CACA,EACA,GAAI,CAACE,EAAI,GACL,MAAM,IAAIC,EAAY,MAAMD,EAAI,KAAK,CAAC,EAE1C,OAAO,MAAMA,EAAI,KAAK,CAC1B,GAaM,aAAaF,EAAuD,QAAAC,EAAA,sBAGtE,IAAMG,GAFM,MAAM,KAAK,KAAKJ,CAAU,GAEC,KACjCK,EAAiC,CAAC,EAExC,OAAAD,EAAM,KAAK,QAASE,GAAQ,CAGxB,IAAMC,EAAc,CAAC,EACrBH,EAAM,QAAQ,QAAQ,CAACI,EAAQC,IAAgB,CAC3CF,EAAOC,CAAM,EAAIF,EAAIG,CAAW,CACpC,CAAC,EACDJ,EAAK,KAAKE,CAAM,CACpB,CAAC,EACMF,CACX,GACJ,ECpDO,IAAMK,EAAN,KAAsB,CAQzB,YAAYC,EAAkB,CAC1B,KAAK,QAAU,IAAIC,EAAiBD,CAAO,EAC3C,KAAK,KAAO,IAAIE,EAAKF,CAAO,EAC5B,KAAK,IAAM,IAAIG,EAAIH,CAAO,CAC9B,CACJ,EClBO,IAAMI,EAAN,KAAkB,CACrB,YAAoBC,EAAgB,CAAhB,YAAAA,CAAiB,CAS/B,MAA4B,QAAAC,EAAA,sBAC9B,GAAI,CAEA,OADkB,MAAM,KAAK,OAAO,aAAa,mBAAoB,CAAC,CAAC,CAE3E,OACOC,EAAP,CACI,MAAM,IAAIC,EAAYD,CAAK,CAC/B,CACJ,GAWM,IAAIE,EAAsC,QAAAH,EAAA,sBAC5C,GAAI,CAEA,OADgB,MAAM,KAAK,OAAO,aAAa,kBAAmB,CAACG,CAAS,CAAC,CAEjF,OACOF,EAAP,CACI,MAAM,IAAIC,EAAYD,CAAK,CAC/B,CACJ,GACJ,ECnCO,IAAMG,EAAN,KAAa,CAEhB,YAAoBC,EAAgB,CAAhB,YAAAA,EAGpB,YAAS,CACL,OAAQ,CAAOC,EAA2BC,IAA2CC,EAAA,sBACjF,GAAI,CACA,OAAO,MAAM,KAAK,OAAO,aAAa,uBAAwB,CAACF,EAAOC,CAAM,CAAC,CACjF,OAASE,EAAP,CACE,cAAQ,IAAI,YAAaA,CAAK,EACxB,IAAIC,EAAYD,CAAK,CAC/B,CACJ,EACJ,CAXA,CAYJ,EClBO,IAAME,EAAN,KAAiB,CACpB,YAAoBC,EAAgB,CAAhB,YAAAA,CAAiB,CAW/B,KAAKC,EAAmBC,EAAkD,QAAAC,EAAA,sBAG5E,GAAI,CACA,OAAO,MAAM,KAAK,OAAO,aAAa,kBAAmB,CAACF,EAAW,GAAGC,EAAU,CAACA,CAAO,EAAI,CAAC,CAAC,CAAC,CACrG,OACOE,EAAP,CACI,MAAM,IAAIC,EAAYD,CAAK,CAC/B,CACJ,GAUM,MAA8B,QAAAD,EAAA,sBAChC,GAAI,CACA,OAAO,MAAM,KAAK,OAAO,aAAa,kBAAmB,CAAC,CAAC,CAC/D,OACOC,EAAP,CACI,MAAM,IAAIC,EAAYD,CAAK,CAC/B,CACJ,GAUM,OAAOH,EAAmBK,EAAoD,QAAAH,EAAA,sBAChF,GAAI,CACA,OAAO,MAAM,KAAK,OAAO,aAAa,oBAAqB,CAACF,EAAWK,CAAM,CAAC,CAClF,OACOF,EAAP,CACI,MAAM,IAAIC,EAAYD,CAAK,CAC/B,CACJ,GACJ,ElBfO,IAAMG,EAAN,KAAgB,CAsCnB,YACWC,EAAmB,CAAC,EAC7B,CADS,aAAAA,EARX,KAAQ,QAA0B,KA3EtC,IAAAC,EAAAC,EAqFQ,IAAMC,GAAcF,EAAAD,EAAQ,cAAR,KAAAC,EAAuBG,EAC3C,KAAK,YAAaF,EAAAF,EAAQ,aAAR,KAAAE,EAAsB,EACxC,KAAK,kBAAoBF,EAAQ,mBAAqB,CAAC,EAEvD,KAAK,OAAS,IAAI,SAAOK,GAAO,CACxB,KAAK,SACL,OAAO,YAAY,KAAK,UAAUA,CAAG,EAAG,KAAK,OAAO,CAE5D,CAAC,EAED,KAAK,KAAO,IAAIC,EAAQ,KAAK,MAAM,EACnC,KAAK,IAAM,IAAIC,EAAO,KAAK,MAAM,EACjC,KAAK,SAAW,IAAIC,EAAY,KAAK,MAAM,EAC3C,KAAK,QAAU,IAAIC,EAAW,KAAK,MAAM,EACzC,KAAK,QAAU,IAAIC,EAAa,KAAK,MAAM,EAC3C,KAAK,QAAU,IAAIC,EAAQ,KAAK,MAAM,EACtC,KAAK,SAAW,IAAIC,EAAY,KAAK,MAAM,EAC3C,KAAK,OAAS,IAAIC,EAAgB,KAAK,OAAO,EAC9C,KAAK,GAAK,IAAIC,EAAG,KAAK,MAAM,EAE5B,IAAMC,EAAkB,KAAK,UAAU,CAAE,GAAI,WAAY,KAAM,CAAC,CAAE,CAAC,EAG/D,OAAO,WAAa,OAAO,OAAO,UAE7B,KAAK,QAAQ,mBACd,KAAK,QAAQ,iBAAmBC,GAGpC,KAAK,OAAO,IAAI,OAAO,EAAE,KAAKC,GAAU,CAlHpD,IAAAhB,EAAAC,EAsHgB,KAAK,QAAU,IACfA,GAAAD,EAAA,KAAK,SAAQ,UAAb,MAAAC,EAAA,KAAAD,EAAuBgB,EAC3B,CAAC,EAAE,MAAMC,GAAS,CAxH9B,IAAAjB,EAAAC,GAyHgBA,GAAAD,EAAA,KAAK,SAAQ,QAAb,MAAAC,EAAA,KAAAD,EAAqBiB,GACrB,QAAQ,MAAM,iDAAkDA,CAAK,CACzE,CAAC,IAGDf,EAAY,QAAQgB,GAAO,OAAO,YAAYJ,EAAiBI,CAAG,CAAC,EACnE,KAAK,MAAQ,WAAW,IAAM,CA/H1C,IAAAlB,EAAAC,EAgIgB,KAAK,QAAU,IACfA,GAAAD,EAAA,KAAK,SAAQ,UAAb,MAAAC,EAAA,KAAAD,EACJ,EAAG,GAAG,GAGV,KAAK,oBAAoB,CAC7B,CAEQ,qBAAsB,CAC1B,OAAO,iBAAiB,UAAiBmB,GAASC,EAAA,sBAzI1D,IAAApB,EAAAC,EA0IY,IAAMoB,EAAOF,EAAM,KAEnB,GAAI,CACA,IAAMf,EAAM,KAAK,MAAMiB,CAAI,EAC3B,GAAIjB,EAAI,KAAO,WAAY,CACvB,GAAI,KAAK,MAAO,CACZ,QAAQ,MAAM,qDAAqD,EACnE,OAGJ,aAAa,KAAK,KAAK,EACvB,KAAK,MAAQA,EAAI,KAAK,MAGtB,KAAK,QAAUe,EAAM,OAGhB,KAAK,QAAQ,mBACd,KAAK,QAAQ,iBAAmBG,EAAiB,KAAK,OAAO,GAAKP,GAItE,KAAK,OAAO,QAAQ,iBAAkB,CAAC,EAAG,CAACE,EAAYI,EAAsBE,IAAiB,CAhKlH,IAAAvB,EAAAC,EAiKwB,GAAIgB,EAAO,CACP,QAAQ,IAAI,qBAAsBA,EAAOI,CAAI,EAC7C,QAGJpB,GAAAD,EAAA,KAAK,SAAQ,WAAb,MAAAC,EAAA,KAAAD,EAAwBqB,EAC5B,CAAC,EAED,KAAK,OAAO,QAAQ,YAAa,CAAC,EAAG,CAACJ,EAAYI,EAAWE,IAAiB,CAzKlG,IAAAvB,EAAAC,EA0KwB,GAAIgB,EAAO,CACP,QAAQ,IAAI,gBAAiBA,EAAOI,CAAI,EACxC,QAEJpB,GAAAD,EAAA,KAAK,SAAQ,SAAb,MAAAC,EAAA,KAAAD,EAAsBqB,EAC1B,CAAC,EAGG,KAAK,mBACL,KAAK,OAAO,QAAQ,aAAc,CAAC,KAAK,iBAAiB,EAAG,CAACJ,EAAYI,EAAWE,IAAiB,CAnL7H,IAAAvB,EAAAC,EAoL4B,GAAIgB,EAAO,CACP,QAAQ,IAAI,iBAAkBA,EAAOI,CAAI,EACzC,OAGAA,KACApB,GAAAD,EAAA,KAAK,SAAQ,UAAb,MAAAC,EAAA,KAAAD,EAAuBqB,GAE/B,CAAC,EAGL,KAAK,QAAU,IAEfpB,GAAAD,EAAA,KAAK,SAAQ,YAAb,MAAAC,EAAA,KAAAD,GACA,OAIJ,GAAI,CAAC,KAAK,MACN,OAGJ,KAAK,OAAO,gBAAgBI,CAAG,CACnC,OAASa,EAAP,CACE,QAAQ,IAAI,8BAA8B,CAC9C,CACJ,EAAC,CACL,CAEA,MAAsB,CAClB,MAAO,CACH,QAAS,KAAK,QACd,OAAQ,KAAK,OACb,QAAS,KAAK,OAClB,CACJ,CAGM,QAAQO,EAAYC,EAAa,QAAAL,EAAA,sBACnC,OAAO,MAAM,KAAK,OAAO,aAAaI,EAAIC,CAAI,CAClD,GACJ",
6
- "names": ["Client", "write", "opts", "msg", "end", "id", "request", "retval", "err", "op", "args", "resolve", "reject", "data", "cb", "exports", "debug", "Server", "methods", "i", "j", "o", "path", "prefix", "ip", "e", "args", "context", "cb", "result", "copy", "s", "filter", "d", "clientId", "msg", "respond", "id", "err", "data", "op", "client", "send", "ctx", "reqCtx", "exports", "__exportStar", "exports", "import_wish_rpc", "HailerError", "error", "UserApi", "client", "userId", "__async", "error", "HailerError", "Kanban", "client", "processId", "options", "__async", "error", "HailerError", "activityId", "priority", "ActivityApi", "client", "Kanban", "processId", "phaseId", "options", "__async", "error", "HailerError", "activityId", "activities", "WorkspaceApi", "client", "__async", "error", "HailerError", "Activity", "client", "activityId", "options", "__async", "processId", "Snackbar", "client", "text", "buttonLabel", "duration", "__async", "Files", "client", "file", "filename", "options", "__async", "resolve", "reject", "reader", "_a", "Ui", "client", "Activity", "Snackbar", "Files", "Process", "client", "__async", "error", "HailerError", "processId", "fieldName", "_a", "_b", "field", "DEFAULT_ALLOWED_URLS", "DEFAULT_BACKEND_URL", "publicBackendMap", "App", "options", "__async", "manifestFile", "location", "manifestUrl", "manifestContent", "appId", "Form", "options", "formsKey", "__async", "res", "HailerError", "formsData", "InsightPublicApi", "options", "insightKey", "__async", "res", "HailerError", "input", "data", "row", "object", "header", "headerIndex", "HailerPublicApi", "options", "InsightPublicApi", "Form", "App", "WorkflowApi", "client", "__async", "error", "HailerError", "processId", "AppApi", "client", "appId", "config", "__async", "error", "HailerError", "InsightApi", "client", "insightId", "options", "__async", "error", "HailerError", "update", "HailerApi", "options", "_a", "_b", "allowedUrls", "DEFAULT_ALLOWED_URLS", "msg", "UserApi", "AppApi", "ActivityApi", "InsightApi", "WorkspaceApi", "Process", "WorkflowApi", "HailerPublicApi", "Ui", "registerMessage", "DEFAULT_BACKEND_URL", "config", "error", "url", "event", "__async", "data", "publicBackendMap", "end", "op", "args"]
3
+ "sources": ["../../node_modules/events/events.js", "../../node_modules/@wishcore/wish-rpc/src/rpc-client.ts", "../../node_modules/@wishcore/wish-rpc/src/rpc-server.ts", "../../node_modules/@wishcore/wish-rpc/src/index.ts", "../src/hailer-api.ts", "../src/types.ts", "../src/modules/user.ts", "../src/modules/activity/kanban.ts", "../src/modules/activity.ts", "../src/modules/network.ts", "../src/modules/ui/activity.ts", "../src/modules/ui/snackbar.ts", "../src/modules/ui/files.ts", "../src/modules/ui.ts", "../src/modules/process.ts", "../src/constants.ts", "../src/modules/public/app.ts", "../src/modules/public/form.ts", "../src/modules/public/insight.ts", "../src/modules/public.ts", "../src/modules/workflow.ts", "../src/modules/app.ts", "../src/modules/insight.ts"],
4
+ "sourcesContent": ["// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar R = typeof Reflect === 'object' ? Reflect : null\nvar ReflectApply = R && typeof R.apply === 'function'\n ? R.apply\n : function ReflectApply(target, receiver, args) {\n return Function.prototype.apply.call(target, receiver, args);\n }\n\nvar ReflectOwnKeys\nif (R && typeof R.ownKeys === 'function') {\n ReflectOwnKeys = R.ownKeys\n} else if (Object.getOwnPropertySymbols) {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target)\n .concat(Object.getOwnPropertySymbols(target));\n };\n} else {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target);\n };\n}\n\nfunction ProcessEmitWarning(warning) {\n if (console && console.warn) console.warn(warning);\n}\n\nvar NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {\n return value !== value;\n}\n\nfunction EventEmitter() {\n EventEmitter.init.call(this);\n}\nmodule.exports = EventEmitter;\nmodule.exports.once = once;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._eventsCount = 0;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nvar defaultMaxListeners = 10;\n\nfunction checkListener(listener) {\n if (typeof listener !== 'function') {\n throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n }\n}\n\nObject.defineProperty(EventEmitter, 'defaultMaxListeners', {\n enumerable: true,\n get: function() {\n return defaultMaxListeners;\n },\n set: function(arg) {\n if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {\n throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received ' + arg + '.');\n }\n defaultMaxListeners = arg;\n }\n});\n\nEventEmitter.init = function() {\n\n if (this._events === undefined ||\n this._events === Object.getPrototypeOf(this)._events) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n }\n\n this._maxListeners = this._maxListeners || undefined;\n};\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {\n throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received ' + n + '.');\n }\n this._maxListeners = n;\n return this;\n};\n\nfunction _getMaxListeners(that) {\n if (that._maxListeners === undefined)\n return EventEmitter.defaultMaxListeners;\n return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n return _getMaxListeners(this);\n};\n\nEventEmitter.prototype.emit = function emit(type) {\n var args = [];\n for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);\n var doError = (type === 'error');\n\n var events = this._events;\n if (events !== undefined)\n doError = (doError && events.error === undefined);\n else if (!doError)\n return false;\n\n // If there is no 'error' event listener then throw.\n if (doError) {\n var er;\n if (args.length > 0)\n er = args[0];\n if (er instanceof Error) {\n // Note: The comments on the `throw` lines are intentional, they show\n // up in Node's output if this results in an unhandled exception.\n throw er; // Unhandled 'error' event\n }\n // At least give some kind of context to the user\n var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));\n err.context = er;\n throw err; // Unhandled 'error' event\n }\n\n var handler = events[type];\n\n if (handler === undefined)\n return false;\n\n if (typeof handler === 'function') {\n ReflectApply(handler, this, args);\n } else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n ReflectApply(listeners[i], this, args);\n }\n\n return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n var m;\n var events;\n var existing;\n\n checkListener(listener);\n\n events = target._events;\n if (events === undefined) {\n events = target._events = Object.create(null);\n target._eventsCount = 0;\n } else {\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (events.newListener !== undefined) {\n target.emit('newListener', type,\n listener.listener ? listener.listener : listener);\n\n // Re-assign `events` because a newListener handler could have caused the\n // this._events to be assigned to a new object\n events = target._events;\n }\n existing = events[type];\n }\n\n if (existing === undefined) {\n // Optimize the case of one listener. Don't need the extra array object.\n existing = events[type] = listener;\n ++target._eventsCount;\n } else {\n if (typeof existing === 'function') {\n // Adding the second element, need to change to array.\n existing = events[type] =\n prepend ? [listener, existing] : [existing, listener];\n // If we've already got an array, just append.\n } else if (prepend) {\n existing.unshift(listener);\n } else {\n existing.push(listener);\n }\n\n // Check for listener leak\n m = _getMaxListeners(target);\n if (m > 0 && existing.length > m && !existing.warned) {\n existing.warned = true;\n // No error code for this since it is a Warning\n // eslint-disable-next-line no-restricted-syntax\n var w = new Error('Possible EventEmitter memory leak detected. ' +\n existing.length + ' ' + String(type) + ' listeners ' +\n 'added. Use emitter.setMaxListeners() to ' +\n 'increase limit');\n w.name = 'MaxListenersExceededWarning';\n w.emitter = target;\n w.type = type;\n w.count = existing.length;\n ProcessEmitWarning(w);\n }\n }\n\n return target;\n}\n\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n function prependListener(type, listener) {\n return _addListener(this, type, listener, true);\n };\n\nfunction onceWrapper() {\n if (!this.fired) {\n this.target.removeListener(this.type, this.wrapFn);\n this.fired = true;\n if (arguments.length === 0)\n return this.listener.call(this.target);\n return this.listener.apply(this.target, arguments);\n }\n}\n\nfunction _onceWrap(target, type, listener) {\n var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };\n var wrapped = onceWrapper.bind(state);\n wrapped.listener = listener;\n state.wrapFn = wrapped;\n return wrapped;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n checkListener(listener);\n this.on(type, _onceWrap(this, type, listener));\n return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n function prependOnceListener(type, listener) {\n checkListener(listener);\n this.prependListener(type, _onceWrap(this, type, listener));\n return this;\n };\n\n// Emits a 'removeListener' event if and only if the listener was removed.\nEventEmitter.prototype.removeListener =\n function removeListener(type, listener) {\n var list, events, position, i, originalListener;\n\n checkListener(listener);\n\n events = this._events;\n if (events === undefined)\n return this;\n\n list = events[type];\n if (list === undefined)\n return this;\n\n if (list === listener || list.listener === listener) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else {\n delete events[type];\n if (events.removeListener)\n this.emit('removeListener', type, list.listener || listener);\n }\n } else if (typeof list !== 'function') {\n position = -1;\n\n for (i = list.length - 1; i >= 0; i--) {\n if (list[i] === listener || list[i].listener === listener) {\n originalListener = list[i].listener;\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (position === 0)\n list.shift();\n else {\n spliceOne(list, position);\n }\n\n if (list.length === 1)\n events[type] = list[0];\n\n if (events.removeListener !== undefined)\n this.emit('removeListener', type, originalListener || listener);\n }\n\n return this;\n };\n\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n\nEventEmitter.prototype.removeAllListeners =\n function removeAllListeners(type) {\n var listeners, events, i;\n\n events = this._events;\n if (events === undefined)\n return this;\n\n // not listening for removeListener, no need to emit\n if (events.removeListener === undefined) {\n if (arguments.length === 0) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n } else if (events[type] !== undefined) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else\n delete events[type];\n }\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n var keys = Object.keys(events);\n var key;\n for (i = 0; i < keys.length; ++i) {\n key = keys[i];\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = Object.create(null);\n this._eventsCount = 0;\n return this;\n }\n\n listeners = events[type];\n\n if (typeof listeners === 'function') {\n this.removeListener(type, listeners);\n } else if (listeners !== undefined) {\n // LIFO order\n for (i = listeners.length - 1; i >= 0; i--) {\n this.removeListener(type, listeners[i]);\n }\n }\n\n return this;\n };\n\nfunction _listeners(target, type, unwrap) {\n var events = target._events;\n\n if (events === undefined)\n return [];\n\n var evlistener = events[type];\n if (evlistener === undefined)\n return [];\n\n if (typeof evlistener === 'function')\n return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n\n return unwrap ?\n unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n}\n\nEventEmitter.prototype.listeners = function listeners(type) {\n return _listeners(this, type, true);\n};\n\nEventEmitter.prototype.rawListeners = function rawListeners(type) {\n return _listeners(this, type, false);\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n if (typeof emitter.listenerCount === 'function') {\n return emitter.listenerCount(type);\n } else {\n return listenerCount.call(emitter, type);\n }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n var events = this._events;\n\n if (events !== undefined) {\n var evlistener = events[type];\n\n if (typeof evlistener === 'function') {\n return 1;\n } else if (evlistener !== undefined) {\n return evlistener.length;\n }\n }\n\n return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];\n};\n\nfunction arrayClone(arr, n) {\n var copy = new Array(n);\n for (var i = 0; i < n; ++i)\n copy[i] = arr[i];\n return copy;\n}\n\nfunction spliceOne(list, index) {\n for (; index + 1 < list.length; index++)\n list[index] = list[index + 1];\n list.pop();\n}\n\nfunction unwrapListeners(arr) {\n var ret = new Array(arr.length);\n for (var i = 0; i < ret.length; ++i) {\n ret[i] = arr[i].listener || arr[i];\n }\n return ret;\n}\n\nfunction once(emitter, name) {\n return new Promise(function (resolve, reject) {\n function errorListener(err) {\n emitter.removeListener(name, resolver);\n reject(err);\n }\n\n function resolver() {\n if (typeof emitter.removeListener === 'function') {\n emitter.removeListener('error', errorListener);\n }\n resolve([].slice.call(arguments));\n };\n\n eventTargetAgnosticAddListener(emitter, name, resolver, { once: true });\n if (name !== 'error') {\n addErrorHandlerIfEventEmitter(emitter, errorListener, { once: true });\n }\n });\n}\n\nfunction addErrorHandlerIfEventEmitter(emitter, handler, flags) {\n if (typeof emitter.on === 'function') {\n eventTargetAgnosticAddListener(emitter, 'error', handler, flags);\n }\n}\n\nfunction eventTargetAgnosticAddListener(emitter, name, listener, flags) {\n if (typeof emitter.on === 'function') {\n if (flags.once) {\n emitter.once(name, listener);\n } else {\n emitter.on(name, listener);\n }\n } else if (typeof emitter.addEventListener === 'function') {\n // EventTarget does not have `error` event semantics like Node\n // EventEmitters, we do not listen for `error` events here.\n emitter.addEventListener(name, function wrapListener(arg) {\n // IE does not have builtin `{ once: true }` support so we\n // have to do it manually.\n if (flags.once) {\n emitter.removeEventListener(name, wrapListener);\n }\n listener(arg);\n });\n } else {\n throw new TypeError('The \"emitter\" argument must be of type EventEmitter. Received type ' + typeof emitter);\n }\n}\n", null, null, null, "import { Client } from '@wishcore/wish-rpc';\nimport { UserApi } from './modules/user';\nimport { ActivityApi } from './modules/activity';\nimport { WorkspaceApi } from './modules/network';\nimport { HailerApiInfo, HailerAppConfig, HailerSettings, HailerSignal } from './types';\nimport { Ui } from './modules/ui';\nimport { Process } from './modules/process';\nimport { DEFAULT_ALLOWED_URLS, DEFAULT_API_VERSION, DEFAULT_BACKEND_URL, publicBackendMap } from './constants';\nimport { HailerPublicApi } from './modules/public';\nimport { WorkflowApi } from './modules/workflow';\nimport { AppApi } from './modules/app';\nimport { InsightApi } from './modules/insight';\n\nexport interface Options {\n /** When connected is called the host is ready to receive calls */\n connected?: () => void;\n /** Callback when app is determined to be outside of Hailer, as a standalone app */\n outside?: (config?: any) => void;\n /** Callback on errors, defaults to printing errors in console */\n error?: (error: Error) => void;\n /** Callback called on app init and when permissions have changed */\n permissions?: () => void;\n /** Callback called on app init and when settings have changed */\n settings?: (data: HailerSettings) => void;\n /** Callback called on app init and when config has changed */\n config?: (config: any) => void;\n /** Will be called each time a subscribed signal is emitted from Hailer frontend. To subscribe to signals, add them to options.subscribedSignals[] */\n signals?: (signal: HailerSignal) => void;\n /** Urls the sdk is allowed to connect to. Defaults to all Hailer instances*/\n allowedUrls?: string[];\n /**\n * Optional signal filter, passes all signals by default\n * \n * Example:\n * \n * subscribedSignals: ['activity.create', 'activity.update']\n */\n subscribedSignals?: string[];\n /** Api version to be used in the app by default */\n apiVersion?: 1;\n /** Public backend Api url. Defaults to https://api.hailer.com */\n publicBackendUrl?: string;\n}\n\nexport class HailerApi {\n public user: UserApi;\n public app: AppApi;\n public activity: ActivityApi;\n public insight: InsightApi;\n public network: WorkspaceApi;\n public process: Process;\n public workflow: WorkflowApi;\n /** All public endpoints, which can be accessed while not logged in to Hailer. */\n public public: HailerPublicApi;\n /** User interface commands */\n public ui: Ui;\n /** Url of the Hailer instance hosting the API */\n private hostUrl?: string;\n\n private appId?: string;\n private client: Client;\n private apiVersion: 1;\n private settings?: HailerSettings;\n private config?: HailerAppConfig;\n private subscribedSignals?: string[];\n private timer?: NodeJS.Timeout;\n /**\n * Hailer API state\n * \n * ```\n * true // outside hailer\n * false // logged into hailer\n * null // state not yet detected\n * ``` \n */\n private outside: boolean | null = null;\n\n /**\n * Create a Hailer API client for inteacting with Hailer. **NOTE** This only works when inside Hailer.\n *\n * This should be run after window is initialized for example in ***onMount*** in Svelte or in ***useEffect*** in React\n */\n constructor(\n public options: Options = {}\n ) {\n const allowedUrls = options.allowedUrls ?? DEFAULT_ALLOWED_URLS;\n this.apiVersion = options.apiVersion ?? DEFAULT_API_VERSION;\n this.subscribedSignals = options.subscribedSignals || [];\n \n this.client = new Client(msg => {\n if (this.hostUrl){\n parent.postMessage(JSON.stringify(msg), this.hostUrl)\n }\n })\n\n this.user = new UserApi(this.client);\n this.app = new AppApi(this.client);\n this.activity = new ActivityApi(this.client);\n this.insight = new InsightApi(this.client);\n this.network = new WorkspaceApi(this.client);\n this.process = new Process(this.client);\n this.workflow = new WorkflowApi(this.client);\n this.public = new HailerPublicApi(this.options);\n this.ui = new Ui(this.client);\n\n const registerMessage = JSON.stringify({ op: 'register', args: [] });\n\n // If we are not in Iframe set location to outside, else wait 100ms for response to register to check if we are in Hailer\n if (window.location === window.parent.location) {\n // Pick a backend to use for public requests, unless it is set\n if (!this.options.publicBackendUrl) {\n this.options.publicBackendUrl = DEFAULT_BACKEND_URL;\n }\n\n this.public.app.config().then(config => {\n // CSM app assumes we are inside hailer when config is called... breaks the thing...\n // this.options.config?.(config);\n\n this.outside = true;\n this.options.outside?.(config);\n }).catch(error => {\n this.options.error?.(error);\n console.error('Failed to get app configuration in Public App.', error);\n });\n } else {\n // if in a frame, try register to Hailer by sending register to all allowed urls\n allowedUrls.forEach(url => parent.postMessage(registerMessage, url));\n this.timer = setTimeout(() => {\n this.outside = true;\n this.options.outside?.()\n }, 100);\n }\n\n this.createEventListener();\n }\n\n private createEventListener() {\n window.addEventListener('message', async event => {\n const data = event.data;\n\n try {\n const msg = JSON.parse(data);\n if (msg.op === 'register') {\n if (this.appId) {\n console.error('App Id is already set...! Are you using hot-reload?');\n return;\n }\n\n clearTimeout(this.timer)\n this.appId = msg.data.appId\n\n // Set host url now that we have a response\n this.hostUrl = event.origin\n\n // Pick a backend to use for public requests, unless it is set\n if (!this.options.publicBackendUrl) {\n this.options.publicBackendUrl = publicBackendMap[this.hostUrl] || DEFAULT_BACKEND_URL;\n }\n\n // Register listeners for config and settings\n this.client.request('v1.ui.settings', [], (error: any, data: HailerSettings, end: boolean) => {\n if (error) {\n console.log('ui.settings error:', error, data);\n return;\n }\n\n this.options.settings?.(data);\n });\n\n this.client.request('v1.config', [], (error: any, data: any, end: boolean) => {\n if (error) {\n console.log('config error:', error, data);\n return;\n }\n this.options.config?.(data)\n })\n\n // Register subscribed signals\n if (this.subscribedSignals) {\n this.client.request('v1.signals', [this.subscribedSignals], (error: any, data: any, end: boolean) => {\n if (error) {\n console.log('signals error:', error, data);\n return;\n }\n\n if (data) {\n this.options.signals?.(data);\n }\n });\n }\n\n this.outside = false;\n // Call connected callback\n this.options.connected?.();\n return;\n }\n\n // bail out unless appId is set, as the app is not properly registered\n if (!this.appId) {\n return;\n }\n\n this.client.messageReceived(msg);\n } catch (error) {\n console.log('Dropped invalid JSON message');\n }\n });\n }\n\n info(): HailerApiInfo {\n return {\n hostUrl: this.hostUrl,\n config: this.config,\n outside: this.outside,\n }\n }\n\n // TODO: This is here for development and debugging, might be removed later\n async request(op: string, args: any[]) {\n return await this.client.requestAsync(op, args);\n }\n}\n", "export interface User {\n firstname: string;\n lastname: string;\n email: string;\n lastSeen: number;\n status?: string;\n managedUser?: boolean;\n removed?: number;\n}\n\nexport interface Workspace {\n _id: string;\n name: string;\n members: string[];\n settings: {\n isolatedTeams?: boolean;\n defaultView: string;\n functionFieldVersion?: 1 | 2;\n color?: string;\n allowPublicCopy?: boolean;\n };\n license: object;\n invoicing?: any;\n propertyFields?: {\n [section: string]: {\n [field: string]: any;\n };\n };\n}\n\nexport interface Activity {\n _id: string;\n process: string;\n teamAccount: TeamAccount // TODO: Convert in frontend\n created: number;\n uid: string;\n cid: string;\n discussion: string;\n currentPhase: string;\n active?: boolean;\n history?: any[];\n name?: string;\n followers?: string[];\n completePhases?: string[];\n location?: {\n type: 'point' | 'area' | 'polyline',\n label: string | null\n data: {\n lat: number\n lng: number\n }[]\n };\n fields?: any;\n files?: any[];\n updated?: number;\n updatedBy?: string;\n priority?: number;\n sequence?: number\n}\n\nexport interface TeamAccount {\n account: string;\n team: string;\n}\n\nexport interface FormsData {\n files: string[];\n history: {\n // eslint-disable-next-line @typescript-eslint/naming-convention\n 0: {\n [fieldId: string]: {\n value: any;\n };\n };\n };\n name: string;\n location?: boolean;\n uid?: string;\n}\nexport interface FormsResponse {\n name: string;\n description?: string;\n enableUnlinkedMode: boolean;\n enableAttachments: boolean;\n enableMapLocation: boolean;\n locationRequired: 1;\n phases: {\n _id: string;\n followers: [];\n name: string;\n description: string;\n uid: string;\n created: number;\n fields: string[];\n announcementFields: [];\n announcementRecipients: [];\n announcementFieldsOrder: [];\n isEndpoint: boolean;\n }[];\n phasesOrder: string[];\n fields: {\n [id: string]: {\n data: [];\n label: string;\n required: boolean;\n type: string;\n inviteToDiscussionOnChange: boolean;\n _id: string;\n created: number;\n updated: number;\n uid: string;\n functionEnabled: boolean;\n };\n };\n enableMessenger: boolean;\n publicForm: {\n enableMessaging: boolean;\n };\n fieldsOrder: [];\n}\n\nexport interface FormCreateResponse {\n key: string,\n creator: string,\n followers: string,\n active: boolean,\n enableMessaging: boolean,\n allowRead: boolean\n}\n\nexport interface InsightResponse {\n insight: {\n name: string\n },\n data: InsightResponseData\n}\n\nexport interface InsightResponseData {\n headers: string[],\n rows: [],\n time: number\n}\n\nexport interface HailerAppConfig {\n fields?: {\n [fieldName: string]: {\n type: string;\n value?: string | number | boolean;\n };\n };\n}\n\nexport type HailerProcess = Workflow;\n\nexport interface Workflow {\n _id: string;\n cid: string;\n name: string;\n description?: string;\n fields: { [fieldId: string]: any };\n phases: { [phase_id: string]: WorkflowPhase };\n phasesOrder: string[];\n\n /*\n defaultView: 'table' | 'kanban' | 'map' | 'calendar';\n fields: { [fieldId: string]: any };\n fieldsOrder: string[];\n phasesRemoved: string[];\n members: any;\n updated: number;\n coverImage?: string;\n createNewLabel?: string;\n enableAddedField: boolean;\n enableLinkedAnnouncements?: boolean;\n enableMapLocation?: boolean;\n enableUnlinkedMode?: boolean;\n enableMessenger?: boolean;\n allowGuests?: boolean;\n enableGuestEditing?: boolean;\n enableModifiedField?: boolean;\n enableOwnerField?: boolean;\n enableOwnerTeamField?: boolean;\n ownerTeamFieldTitle?: string;\n enableUniqueName?: boolean;\n enablePredefinedName?: boolean;\n enablePreselectedTeam?: boolean;\n initPhaseDescription?: string;\n locationRequired?: boolean;\n nameColumnText?: string;\n nameFunction?: string;\n nameFunctionEnabled?: boolean;\n nameFunctionVariables?: any;\n nameEditable?: boolean;\n personInCharge?: string;\n personInChargeLabel?: string;\n publicForm?: {\n key: string;\n active: boolean;\n creator: string;\n team_account: TeamAccount;\n followers: string;\n allowRead: boolean;\n enableMessaging?: boolean;\n }\n predefinedNamePrefix?: string;\n preselectedTeam?: TeamAccount;\n enableAttachments: boolean;\n nameFieldPlaceHolderText: string;\n order?: number;\n allowMultipleTags?: boolean;\n allowCustomTags?: boolean;\n requireFileTag?: boolean;\n documentTemplates?: any;\n color?: string;\n starred?: string[];\n isStarred?: boolean;\n createdActivities?: number;\n */\n}\n\nexport interface WorkflowPhase {\n _id: string;\n name: string;\n description?: string;\n /*\n followers: string[];\n created: number;\n uid?: string;\n members?: any[]\n fields?: string[]\n enableAnnouncement?: boolean,\n announcementFields?: string[];\n announcementRecipients?: string[];\n announcementFieldsOrder?: string[];\n announcementToOwner?: boolean;\n announcementToOwnerTeam?: boolean;\n isEndPoint?: boolean;\n possibleNextPhase?: string[];\n possibleNextPhaseSettings?: any;\n fieldOptions?: any;\n primaryNumericField?: string;\n webhooksEnabled?: boolean;\n webhookAdded?: boolean;\n webhookUpdated?: boolean;\n primaryDateField?: string | null | any;\n removed?: number;\n removedBy?: string;\n color?: string | null;\n */\n}\n\nexport type PermissionType = 'admin' | 'own' | 'ownteam' | 'any' | 'edit';\n\nexport interface Member {\n id: string;\n info: { [key: string]: string | number | boolean | null };\n permissions: PermissionType[];\n}\n\nexport interface InsightWorkflowSource {\n name: string;\n workflowId: string;\n fields: {\n name: string;\n fieldId?: string;\n /** Used for phaseLastMove meta */\n phaseId?: string;\n /** Activity information, like _id, created, phaseId etc. */\n meta?: string;\n }[];\n}\nexport interface InsightDoc {\n _id: string;\n name: string;\n sources: InsightWorkflowSource[];\n cid: string;\n /** User id of creator */\n uid: string;\n members: Member[];\n updated: number;\n public: boolean;\n /** Key for accessing Insight when set to public */\n publicKey?: string;\n /** sandboxed javascript with access to all activities in given workflows */\n function?: string;\n /** To be used with SQLite if we want to.... */\n query?: string;\n presets: {\n version: 1;\n name: string | 'default';\n options: any;\n }[];\n}\n\nexport type InsightPublic = Omit<InsightDoc, '_id'>;\n\n// These are separate so we can do different configs if necessary without it being a breaking change\nexport interface InsightData {\n headers: string[];\n rows: (string | number | null)[][];\n time: number;\n}\n\nexport interface InsightResponseAsObjectItem {\n [key: string]: any\n}\nexport type InsightResponseAsObjects = InsightResponseAsObjectItem[]\n\nexport interface KanbanListResponse {\n map: {\n [phaseId: string]: {\n activities: {\n _id: string,\n followers: string[],\n name: string,\n fields: { [key: string]: any }\n files: string[],\n primaryDateField: number,\n priority: number,\n }[]\n meta: {\n count: number,\n totalPrimaryNumericValue: number,\n primaryNumericFieldUnit: string | null\n }\n }\n }\n}\n\nexport interface KanbanLoadResponse {\n activity: {\n _id: string,\n followers: string[],\n name: string,\n fields: { [key: string]: any },\n files: string[],\n primaryDateField: number | null,\n priority: number,\n linkedFromCount: number\n },\n process: string,\n phase: string\n}\nexport interface ActivityListOptions {\n sortBy?: 'name' | 'created' | 'updated' | 'following' | 'owner' | 'team' | 'completedOn' | 'priority',\n sortOrder?: 'asc' | 'desc',\n limit?: number,\n skip?: number,\n includeUsers?: boolean,\n includeTeams?: boolean,\n includeHistory?: boolean\n filters?: any\n}\nexport interface ActivityCreateOptions {\n teamId?: string;\n fileIds?: string[];\n followerIds?: string[];\n location?: {\n label?: string;\n type: 'area' | 'point' | 'polyline';\n data: [{ lat: number, lng: number }];\n };\n discussionId?: string;\n phaseId?: string;\n returnDocument?: boolean;\n}\nexport interface ActivityKanbanListOptions {\n filter: {\n user?: {\n uid: string;\n field: string;\n },\n account?: string;\n team?: string;\n dates?: {\n field: string;\n start: number;\n end: number;\n };\n },\n search?: string;\n limit?: number;\n skip?: number;\n phase?: string;\n includeUsers?: boolean;\n includeTeams?: boolean;\n}\n\nexport interface HailerSettings {\n theme: 'light' | 'dark'\n preferredLanguages: string[];\n}\n\nexport interface HailerError {\n code: number,\n msg: string, \n debug: object\n}\n\nexport interface HailerApiInfo {\n /** Url of the Hailer instance hosting the API */\n hostUrl?: string;\n config?: HailerAppConfig;\n outside: boolean | null;\n}\n\nexport class HailerError extends Error {\n public code: number\n public msg: string\n public debug: object\n constructor(error: {code: number, msg: string, debug: object}) {\n super()\n\n this.code = error.code\n this.msg = error.msg\n this.debug = error.debug\n \n Object.setPrototypeOf(this, HailerError.prototype);\n }\n}\n\nexport interface HailerSignal {\n sig: string;\n meta: any;\n}\n", "import { Client } from '@wishcore/wish-rpc';\nimport { HailerError, User } from '../types';\n\nexport class UserApi {\n constructor(private client: Client) {}\n\n /** \n * Returns the specified user\n * \n * @param userId id of the Hailer user\n *\n * @returns Hailer user information\n *\n * @throws {HailerError} if request is incorrect\n */\n async get(userId: string): Promise<User> {\n try {\n const res = await this.client.requestAsync('v1.user.get', [userId]);\n return res;\n }\n catch (error: any) {\n throw new HailerError(error) \n }\n }\n\n /** \n * Returns the current user\n *\n * \n * @returns the current Hailer user information\n *\n * @throws {HailerError} if request is incorrect\n */\n async current(): Promise<User> {\n try {\n const res = await this.client.requestAsync('v1.user.current', []);\n return res;\n }\n catch (error: any) {\n throw new HailerError(error) \n }\n }\n\n /** \n * Lists all Hailer users from a workspace\n * \n * \n * @returns list of Hailer users in the workspace the app user is currently in\n *\n * @throws {HailerError} if request is incorrect\n */\n async list(): Promise<{ [key: string]: User }> {\n try {\n const users = await this.client.requestAsync('v1.user.list', []);\n return users;\n }\n catch (error: any) {\n throw new HailerError(error) \n }\n }\n}\n", "import { Client } from '@wishcore/wish-rpc';\nimport { ActivityKanbanListOptions, HailerError, KanbanListResponse, KanbanLoadResponse } from '../../types';\n\nexport class Kanban {\n constructor(private client: Client) { }\n \n /** \n * Lists all activities in a kanban grouped by phases\n * \n * @param processId the id of the process the kanban relates to\n * @param options ActivityKanbanListOptions\n *\n * @returns activities in kanban list format\n *\n * @throws {HailerError} if request fails\n */\n async list(processId: string, options?: ActivityKanbanListOptions): Promise<KanbanListResponse> {\n try {\n const res = await this.client.requestAsync('v1.activity.kanban.list', [processId, ...options ? [options] : []]);\n return res;\n } catch (error: any) {\n throw new HailerError(error) \n }\n }\n\n /** \n * Loads a single activity in kanban format\n * \n * @param activityId activityId of the wanted activity\n *\n * @returns activity in kanban format\n * \n * @throws {HailerError} if request is incorrect\n */\n async load(activityId: string): Promise<KanbanLoadResponse> {\n try {\n const res = await this.client.requestAsync('v1.activity.kanban.load', [activityId]);\n return res;\n } catch (error: any) {\n throw new HailerError(error) \n }\n }\n\n /** \n * Updates priority of activities in kanban\n * \n * @param activityId activityId of the wanted activity\n * @param priority new priority for the activity\n *\n * @throws {HailerError} if request is incorrect\n */\n async updatePriority(activityId: string, priority: number): Promise<void> {\n try {\n const res = await this.client.requestAsync('v1.activity.kanban.updatePriority', [{activityId, priority}]);\n return res;\n } catch (error: any) {\n throw new HailerError(error) \n }\n }\n\n}\n", "import { Client } from '@wishcore/wish-rpc';\nimport { ActivityCreateOptions, ActivityListOptions, Activity, HailerError } from '../types';\nimport { Kanban } from './activity/kanban';\n\nexport class ActivityApi {\n public kanban: Kanban\n constructor(private client: Client) {\n this.kanban = new Kanban(client)\n }\n\n /** \n * Lists all activities from the specified process and phase\n *\n * @param processId process from current network\n * @param phaseId phase in the process specified in processId\n * @param options ActivityListOptions\n *\n * @returns List of Hailer activities from process and phase filtered with supplied options\n *\n * @throws {HailerError} if request is incorrect\n */\n async list(processId: string, phaseId: string, options?: ActivityListOptions): Promise<Activity[]> {\n try {\n const res = await this.client.requestAsync('v1.activity.list', [processId, phaseId, options]);\n return res.activities;\n }\n catch (error: any) {\n throw new HailerError(error) \n }\n }\n\n /** \n * Gets single activity\n *\n * @param activityId activity Id of the process specified in processId\n * @param processId Process where the activityId is\n * @param phaseId Phase where the activityId is in process specified by processId\n * @param options options containing apiVersion\n *\n * @returns Hailer activity information or undefined if no activity is found\n *\n * @throws {HailerError} if request is incorrect\n */\n async get(activityId: string): Promise<Activity | undefined> {\n try {\n // Uses the same endpoint as getAll but only returns the activity in question\n return await this.client.requestAsync('v1.activity.get', [activityId]);\n }\n catch (error: any) {\n throw new HailerError(error) \n }\n }\n\n /** \n * Creates activities\n * \n * @param processId The process where the activity is created\n * @param activities new activities as objects\n * @param activities.name name of the activity\n * @param activities.fields fields of the activity\n * @param options ActivityCreateOptions\n *\n * @throws {HailerError} if request is incorrect\n */\n async create(processId: string, activities: { name: string; fields?: { [id: string]: string | number } }[], options?: ActivityCreateOptions ): Promise<Activity[]> {\n try {\n const res = await this.client.requestAsync('v1.activity.create', [processId, activities, ...options ? [options] : []]);\n return res;\n }\n catch (error: any) {\n throw new HailerError(error) \n }\n }\n\n /** \n * Updates activites\n *\n * Each activity has the following parameters \n * @param activities updated activity objects of an activity to edit\n * @param activities.name New name of the activity\n * @param activities.fields change values of fields, null removes current value\n * @param activities.phaseId New phase of the activity\n * @param options \n *\n * @returns The number of updated activities\n *\n * @throws {HailerError} if request is incorrect\n */\n async update(\n activities: { _id: string, name?: string, fields?: { [id: string]: string | number | null }, phaseId?: string }[],\n options: any\n ): Promise<number> {\n try {\n const res = await this.client.requestAsync('v1.activity.update', [activities, ...options ? [options] : []]);\n return res;\n }\n catch (error: any) {\n throw new HailerError(error) \n }\n }\n\n /** \n * Removes activities\n *\n * @param activities Ids of activities to be removed\n * @param options options containing apiVersion\n *\n * @returns The number of removed activities\n *\n * @throws {HailerError} if request is incorrect\n */\n async remove(activities: string[]): Promise<number> {\n try {\n const res = await this.client.requestAsync('v1.activity.remove', [activities]);\n return res;\n }\n catch (error: any) {\n throw new HailerError(error) \n }\n }\n}\n", "import { Client } from '@wishcore/wish-rpc';\nimport { HailerError, Workspace } from '../types';\n\nexport class WorkspaceApi {\n constructor(private client: Client) {}\n\n /** \n * Returns the current network\n *\n * @returns the Hailer Workspace information the user is currently in\n *\n * @throws {HailerError} if request is incorrect\n */\n async current(): Promise<Workspace> {\n try {\n const res = await this.client.requestAsync('v1.network.current', []);\n return res;\n }\n catch (error: any) {\n throw new HailerError(error) \n }\n }\n}\n", "import { Client } from '@wishcore/wish-rpc';\n\nexport type ActivityTabTypes =\n 'detail' |\n 'discussion' |\n 'files' |\n 'location' |\n 'linkedFrom' |\n 'options';\n\nexport class Activity {\n constructor(private client: Client) {}\n\n /** Opens an activity in Hailer sidebar */\n async open(\n /** Hailer Activity Id */\n activityId: string,\n options?: {\n /** Which tab to open in activity aside */\n tab?: ActivityTabTypes\n },\n ): Promise<void> {\n await this.client.requestAsync('v1.ui.activity.open', [activityId, ...options ? [options] : []]);\n }\n\n /** Opens activity creation view in Hailer sidebar */\n async create(\n processId: string,\n options?: {\n /** Activity name/title */\n name?: string,\n /** Prepopulate fields */\n fields?: {\n [fieldId: string]: number | string | { start: number, end: number },\n }\n }\n ): Promise<{ _id: string, name: string } | null> {\n return await this.client.requestAsync('v1.ui.activity.create', [processId, ...options ? [options] : []]);\n }\n}\n", "import { Client } from '@wishcore/wish-rpc';\n\nexport class Snackbar {\n constructor(private client: Client) {}\n\n /** \n * Opens a snackbar in Hailer\n * @param text the text displayed on the snackbar\n * @param buttonLabel the label for the button on the snackbar, for example 'OK'\n * @param duration the time the snackbar is visible in ms\n */\n async open(\n /** The text displayed on the snackbar */\n text: string,\n /** The label for the button on the snackbar, for example 'OK' */\n buttonLabel: string,\n /** The time the snackbar is visible in ms */\n duration?: number,\n ): Promise<void> {\n await this.client.requestAsync('v1.ui.snackbar.open', [text, buttonLabel, duration]);\n }\n}\n", "import { Client } from '@wishcore/wish-rpc';\n\nexport class Files {\n constructor(private client: Client) {}\n\n /**\n * Uploads a file to Hailer\n *\n * @param file file to be uploaded\n * @param publicFile is the file accessible outside of Hailer\n * @param options if file is public\n *\n * @returns File ID in Hailer as string\n */\n public async uploadFile(file: File, filename: string, options: { isPublic?: boolean }): Promise<string> {\n return await this.client.requestAsync('v1.ui.file.upload', [await this.toBase64(file), filename, !!options?.isPublic]);\n }\n\n private toBase64(file: File): Promise<string | ArrayBuffer> {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.readAsDataURL(file);\n reader.onload = () => resolve(reader.result ?? '');\n reader.onerror = reject;\n });\n }\n}\n", "import { Client } from '@wishcore/wish-rpc';\nimport { Activity } from './ui/activity';\nimport { Snackbar } from './ui/snackbar';\nimport { Files } from './ui/files';\n\n\nexport class Ui {\n public activity;\n public snackbar;\n public files;\n public insight;\n\n constructor(private client: Client) {\n this.activity = new Activity(client);\n this.snackbar = new Snackbar(client);\n\n this.insight = {\n create: async (\n /** Defaults to App workspace */\n workspaceId?: string\n ): Promise<void> => {\n await client.requestAsync('v1.ui.insight.create', [workspaceId]);\n },\n edit: async (\n insightId: string\n ): Promise<void> => {\n await client.requestAsync('v1.ui.insight.edit', [insightId]);\n },\n delete: async (\n insightId: string\n ): Promise<void> => {\n await client.requestAsync('v1.ui.insight.delete', [insightId]);\n },\n permission: async (\n insightId: string\n ): Promise<void> => {\n await client.requestAsync('v1.ui.insight.permission', [insightId]);\n }\n };\n\n this.files = new Files(client);\n }\n}\n", "import { Client } from '@wishcore/wish-rpc';\nimport { HailerError, HailerProcess } from '../types';\n\n/** @deprecated Use Workflow instead */\nexport class Process {\n constructor(private client: Client) {}\n \n /** \n * Lists all processes from a workspace\n *\n * @returns all Hailer processes in the workspace the app user is currently in \n *\n * @throws {HailerError} if request is incorrect\n */\n async list(): Promise<{ [key: string]: HailerProcess }> {\n try {\n const processes = await this.client.requestAsync('v1.process.list', []);\n return processes;\n }\n catch (error: any) {\n throw new HailerError(error) \n }\n }\n\n /** \n * Gets a single process from a workspace\n * \n * @param processId the id of the process in question\n * \n * @returns the specified Hailer process\n *\n * @throws {HailerError} if request is incorrect\n */\n async get(processId: string): Promise<HailerProcess> {\n try {\n const process = await this.client.requestAsync('v1.process.get', [processId]);\n return process;\n }\n catch (error: any) {\n throw new HailerError(error) \n }\n }\n\n /**\n * Gets an id of a field in a process by its name\n *\n * @param processId the id of the process in question\n * @param fieldName name of the field\n *\n * @returns the field id as string\n *\n * @throws {HailerError} if request is incorrect\n */\n async getFieldIdByName(processId: string, fieldName: string): Promise<string> {\n try {\n return Object.values((await this.get(processId))?.fields || {}).find(\n (field) => field.label.toLowerCase() === fieldName\n )?._id;\n }\n catch (error: any) {\n throw new HailerError(error)\n }\n }\n}\n", "// Changing this will be a breaking change\nexport const DEFAULT_API_VERSION = 1;\n\nexport const DEFAULT_ALLOWED_URLS = ['https://app.hailer.com', 'https://next.hailer.com', 'https://testapp.hailer.biz', 'https://app.hailer.biz', 'https://localhost:9443'];\n\nexport const DEFAULT_BACKEND_URL = 'https://api.hailer.com';\n\n/** Map of which backend to use depending on which frontend is hosting the app frame, be sure to fall back to production backend if no match */\nexport const publicBackendMap: { [host: string]: string } = {\n 'https://app.hailer.com': DEFAULT_BACKEND_URL,\n 'https://next.hailer.com': DEFAULT_BACKEND_URL,\n 'https://app.hailer.biz': 'https://api.hailer.biz',\n 'https://testapp.hailer.biz': 'https://testapi.hailer.biz',\n 'https://localhost:9443': 'http://localhost:1337',\n}\n", "import { Options } from '../../hailer-api';\nimport { HailerAppConfig } from '../../types';\n\nexport class App {\n constructor(private options: Options) {}\n\n /** \n * Read data from app API\n *\n * @param appId key of a specific insight\n *\n * @returns App manifest\n *\n * @throws {HailerError} if there is something wrong with the request or insight cannot be found\n * @throws {TypeError} if Hailer cannot be reached\n */\n async config(): Promise<HailerAppConfig> {\n const manifestFile = 'manifest.json';\n const location = window.location.origin + window.location.pathname;\n let manifestUrl = location + manifestFile;\n\n if (location.endsWith('/index.html')) {\n manifestUrl = location.slice(0, -10) + manifestFile;\n }\n\n const manifestContent = await (await fetch(manifestUrl)).text();\n\n const manifest = JSON.parse(manifestContent);\n\n const appId = manifest.appId;\n\n const res = await fetch(this.options.publicBackendUrl + '/api/v3/app/public', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify([appId])\n });\n\n return await res.json();\n }\n\n}\n", "import { Options } from '../../hailer-api';\nimport { FormCreateResponse, FormsData, FormsResponse, HailerError } from '../../types';\n\nexport class Form {\n constructor(private options: Options) {}\n\n /** \n * Read data from forms\n *\n * @param formsKey key of a form\n * @param options Overrides default request options, url defaults to https://api.hailer.com/api/v2/forms\n *\n * @returns forms data as object or null if form could not be found\n *\n * @throws {HailerError} if there is something wrong with the request or form cannot be found\n * @throws {TypeError} if Hailer cannot be reached\n */\n async data(formsKey: string): Promise<FormsResponse> {\n const res = await fetch(this.options.publicBackendUrl + '/api/v2/forms/process/get', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify([formsKey])\n });\n if (!res.ok) {\n throw new HailerError(await res.json())\n }\n return await res.json();\n }\n\n /** \n * Submits form to specified process\n *\n * @param formsKey key of a form\n * @param formsData Data to be sent to form endpoint\n * @param options Overrides default request options, url defaults to https://api.hailer.com/api/v2/forms\n *\n * @returns form creation data or null if form could not be created\n *\n * @throws {HailerError} if there is something wrong with the request or form cannot be found\n * @throws {TypeError} if Hailer cannot be reached\n */\n async submit(formsKey: string, formsData: FormsData): Promise<FormCreateResponse> {\n const res = await fetch(this.options.publicBackendUrl + '/api/v2/forms/activity/create', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify([formsKey, formsData])\n });\n if (!res.ok) {\n throw new HailerError(await res.json())\n }\n return await res.json();\n }\n}\n", "import { Options } from '../../hailer-api';\nimport { HailerError, InsightResponse, InsightResponseAsObjects, InsightResponseData } from '../../types';\n\nexport class InsightPublicApi {\n constructor(private options: Options) {}\n\n /** \n * Read data from insight API\n *\n * @param insightKey key of a specific insight\n * @param options Overrides default request options, url defaults to https://api.hailer.com/api/v3/insight/public\n *\n * @returns Insight data as object\n *\n * @throws {HailerError} if there is something wrong with the request or insight cannot be found\n * @throws {TypeError} if Hailer cannot be reached\n */\n async data(insightKey: string): Promise<InsightResponse> {\n const res = await fetch(this.options.publicBackendUrl + '/api/v3/insight/public', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify([insightKey])\n }\n );\n if (!res.ok) {\n throw new HailerError(await res.json())\n }\n return await res.json();\n }\n\n /** \n * Read data from insight API and return in an array of JavaScript objects\n *\n * @param insightKey key of a specific insight\n * @param options Overrides default request options, url defaults to https://api.hailer.com/api/v3/insight/public\n *\n * @returns Insight data as array of JavaScript objects\n *\n * @throws {HailerError} if there is something wrong with the request or insight cannot be found\n * @throws {TypeError} if Hailer cannot be reached\n */\n async dataAsObject(insightKey: string): Promise<InsightResponseAsObjects> {\n const res = await this.data(insightKey);\n\n const input: InsightResponseData = res.data;\n const data: InsightResponseAsObjects = [];\n \n input.rows.forEach((row) => {\n // The object keys are constructed dynamically, so any is necessary\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const object: any = {};\n input.headers.forEach((header, headerIndex) => {\n object[header] = row[headerIndex];\n });\n data.push(object);\n });\n return data;\n }\n}\n", "import { Options } from '../hailer-api';\nimport { App } from './public/app';\nimport { Form } from './public/form';\nimport { InsightPublicApi } from './public/insight';\n\n/**\n * This class is used to access Hailer public API even when the app is outside of Hailer\n */\nexport class HailerPublicApi {\n /** Allows accessing public insight methods. Used for reading data from Hailer even when app is outside of Hailer */\n public insight: InsightPublicApi;\n /** Allows accessing public forms methods. Used for sending data to Hailer even when app is outside of Hailer */\n public form: Form;\n /** Access public App information */\n public app: App;\n\n constructor(options: Options) {\n this.insight = new InsightPublicApi(options);\n this.form = new Form(options);\n this.app = new App(options);\n }\n}\n", "import { Client } from '@wishcore/wish-rpc';\nimport { HailerError, Workflow } from '../types';\n\nexport class WorkflowApi {\n constructor(private client: Client) {}\n \n /** \n * Lists all processes from a workspace\n *\n * @returns all Hailer processes in the workspace the app user is currently in \n *\n * @throws {HailerError} if request is incorrect\n */\n async list(): Promise<Workflow[]> {\n try {\n const processes = await this.client.requestAsync('v1.workflow.list', []);\n return processes;\n }\n catch (error: any) {\n throw new HailerError(error) \n }\n }\n\n /** \n * Gets a single process from a workspace\n * \n * @param processId the id of the process in question\n * \n * @returns the specified Hailer process\n *\n * @throws {HailerError} if request is incorrect\n */\n async get(processId: string): Promise<Workflow> {\n try {\n const process = await this.client.requestAsync('v1.workflow.get', [processId]);\n return process;\n }\n catch (error: any) {\n throw new HailerError(error) \n }\n }\n}\n", "import { Client } from '@wishcore/wish-rpc';\nimport { HailerAppConfig, HailerError } from '../types';\n\n/**\n * This class is used to access Hailer public API even when the app is outside of Hailer\n */\nexport class AppApi {\n\n constructor(private client: Client) {\n }\n\n config = {\n update: async (appId: string | undefined, config: HailerAppConfig): Promise<void> => {\n try {\n return await this.client.requestAsync('v1.app.config.update', [appId, config]);\n } catch (error: any) {\n console.log('Errorasd ', error);\n throw new HailerError(error);\n }\n }\n }\n}\n", "import { Client } from '@wishcore/wish-rpc';\nimport { HailerError, InsightData, InsightDoc } from '../types';\n\nexport class InsightApi {\n constructor(private client: Client) {}\n\n /** \n * Get Insight data \n * \n * @param insightId the id of the Insight the data is fetched from\n * \n * @returns data from the Insight\n *\n * @throws {HailerError} if request is incorrect\n */\n async data(insightId: string, options: { update?: true }): Promise<InsightData> {\n\n\n try {\n return await this.client.requestAsync('v1.insight.data', [insightId, ...options ? [options] : []]);\n }\n catch (error: any) {\n throw new HailerError(error) \n }\n }\n\n /** \n * Get Insight data \n * \n * \n * @returns data from the Insight\n *\n * @throws {HailerError} if request is incorrect\n */\n async list(): Promise<InsightDoc[]> {\n try {\n return await this.client.requestAsync('v1.insight.list', []);\n }\n catch (error: any) {\n throw new HailerError(error) \n }\n }\n\n /** \n * Get Insight data \n * \n * \n * @returns data from the Insight\n *\n * @throws {HailerError} if request is incorrect\n */\n async update(insightId: string, update: Partial<InsightDoc>): Promise<InsightDoc[]> {\n try {\n return await this.client.requestAsync('v1.insight.update', [insightId, update]);\n }\n catch (error: any) {\n throw new HailerError(error) \n }\n } \n}\n\n"],
5
+ "mappings": "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",
6
+ "names": ["require_events", "__commonJSMin", "exports", "module", "R", "ReflectApply", "target", "receiver", "args", "ReflectOwnKeys", "ProcessEmitWarning", "warning", "NumberIsNaN", "value", "EventEmitter", "once", "defaultMaxListeners", "checkListener", "listener", "arg", "n", "_getMaxListeners", "that", "type", "i", "doError", "events", "er", "err", "handler", "len", "listeners", "arrayClone", "_addListener", "prepend", "m", "existing", "w", "onceWrapper", "_onceWrap", "state", "wrapped", "list", "position", "originalListener", "spliceOne", "keys", "key", "_listeners", "unwrap", "evlistener", "unwrapListeners", "emitter", "listenerCount", "arr", "copy", "index", "ret", "name", "resolve", "reject", "errorListener", "resolver", "eventTargetAgnosticAddListener", "addErrorHandlerIfEventEmitter", "flags", "wrapListener", "events_1", "Client", "write", "opts", "msg", "end", "id", "request", "retval", "err", "op", "args", "resolve", "reject", "data", "cb", "exports", "debug", "Server", "methods", "i", "j", "o", "path", "prefix", "ip", "e", "args", "context", "cb", "result", "copy", "s", "filter", "d", "clientId", "msg", "respond", "id", "err", "data", "op", "client", "send", "ctx", "reqCtx", "exports", "__exportStar", "exports", "import_wish_rpc", "HailerError", "error", "UserApi", "client", "userId", "__async", "error", "HailerError", "Kanban", "client", "processId", "options", "__async", "error", "HailerError", "activityId", "priority", "ActivityApi", "client", "Kanban", "processId", "phaseId", "options", "__async", "error", "HailerError", "activityId", "activities", "WorkspaceApi", "client", "__async", "error", "HailerError", "Activity", "client", "activityId", "options", "__async", "processId", "Snackbar", "client", "text", "buttonLabel", "duration", "__async", "Files", "client", "file", "filename", "options", "__async", "resolve", "reject", "reader", "_a", "Ui", "client", "Activity", "Snackbar", "workspaceId", "__async", "insightId", "Files", "Process", "client", "__async", "error", "HailerError", "processId", "fieldName", "_a", "_b", "field", "DEFAULT_ALLOWED_URLS", "DEFAULT_BACKEND_URL", "publicBackendMap", "App", "options", "__async", "manifestFile", "location", "manifestUrl", "manifestContent", "appId", "Form", "options", "formsKey", "__async", "res", "HailerError", "formsData", "InsightPublicApi", "options", "insightKey", "__async", "res", "HailerError", "input", "data", "row", "object", "header", "headerIndex", "HailerPublicApi", "options", "InsightPublicApi", "Form", "App", "WorkflowApi", "client", "__async", "error", "HailerError", "processId", "AppApi", "client", "appId", "config", "__async", "error", "HailerError", "InsightApi", "client", "insightId", "options", "__async", "error", "HailerError", "update", "HailerApi", "options", "_a", "_b", "allowedUrls", "DEFAULT_ALLOWED_URLS", "msg", "UserApi", "AppApi", "ActivityApi", "InsightApi", "WorkspaceApi", "Process", "WorkflowApi", "HailerPublicApi", "Ui", "registerMessage", "DEFAULT_BACKEND_URL", "config", "error", "url", "event", "__async", "data", "publicBackendMap", "end", "op", "args"]
7
7
  }
@@ -7,5 +7,11 @@ export declare class Ui {
7
7
  activity: Activity;
8
8
  snackbar: Snackbar;
9
9
  files: Files;
10
+ insight: {
11
+ create: (workspaceId?: string) => Promise<void>;
12
+ edit: (insightId: string) => Promise<void>;
13
+ delete: (insightId: string) => Promise<void>;
14
+ permission: (insightId: string) => Promise<void>;
15
+ };
10
16
  constructor(client: Client);
11
17
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hailer/app-sdk",
3
- "version": "1.0.1-beta6",
3
+ "version": "1.0.1-beta7",
4
4
  "description": "SDK for building Hailer Apps",
5
5
  "author": "",
6
6
  "license": "ISC",