@synnaxlabs/client 0.42.0 → 0.42.1

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.
@@ -1,5 +1,5 @@
1
1
 
2
- > @synnaxlabs/client@0.42.0 build /home/runner/work/synnax/synnax/client/ts
2
+ > @synnaxlabs/client@0.42.1 build /home/runner/work/synnax/synnax/client/ts
3
3
  > tsc --noEmit && vite build
4
4
 
5
5
   Synnax - Production mode
@@ -11,7 +11,7 @@ rendering chunks...
11
11
  [vite:dts] Start generate declaration files...
12
12
  computing gzip size...
13
13
  dist/client.js 388.02 kB │ gzip: 90.52 kB
14
- [vite:dts] Declaration files built in 4212ms.
14
+ [vite:dts] Declaration files built in 4073ms.
15
15
 
16
16
  dist/client.cjs 252.86 kB │ gzip: 69.65 kB
17
- ✓ built in 5.34s
17
+ ✓ built in 5.19s
package/dist/client.cjs CHANGED
@@ -35,7 +35,7 @@
35
35
  payload, a list of lazy series, a lazy array, a map, or a record keyed by channel
36
36
  name. keys parameter must be a set of channel keys or channel names.`)}get colType(){return this.columns.length===0?null:typeof this.columns[0]=="string"?"name":"key"}get keys(){if(this.colType==="name")throw new mt("colType is not key");return this.columns??[]}get uniqueKeys(){return Di.unique(this.keys)}get names(){if(this.colType==="key")throw new mt("colType is not name");return this.columns??[]}get uniqueNames(){return Di.unique(this.names)}get uniqueColumns(){return this.colType==="key"?this.uniqueKeys:this.uniqueNames}toPayload(){return{series:this.series.map(e=>Ko(e)),keys:[...this.keys]}}get isVertical(){return this.uniqueColumns.length===this.columns.length}get isHorizontal(){return this.uniqueColumns.length===1}get isSquare(){return this.isHorizontal&&this.isVertical}get isWeaklyAligned(){if(this.columns.length<=1)return!0;const e=this.timeRanges;return e.every(t=>t.equals(e[0]))}timeRange(e){if(e==null){if(this.columns.length===0)return q.ZERO;const n=z.min(...this.series.map(a=>a.timeRange.start)),s=z.max(...this.series.map(a=>a.timeRange.end));return new q(n,s)}const t=this.get(e);return t==null?q.ZERO:t.timeRange}latest(){return this.at(-1)}get timeRanges(){return this.uniqueColumns.map(e=>this.timeRange(e))}get(e){return Array.isArray(e)?this.filter(t=>e.includes(t)):new Ro(this.series.filter((t,n)=>this.columns[n]===e))}push(e,...t){if(e instanceof V){if(this.colType!==null&&e.colType!==this.colType)throw new F("keyVariant must match");this.series.push(...e.series),this.columns.push(...e.columns)}else{if(this.series.push(...t),typeof e=="string"&&this.colType==="key")throw new F("keyVariant must match");if(typeof e!="string"&&this.colType==="name")throw new F("keyVariant must match");this.columns.push(...Array.from({length:t.length},()=>e))}}concat(e){return new V([...this.columns,...e.columns],[...this.series,...e.series])}has(e){return typeof e=="string"&&this.colType==="key"||typeof e=="number"&&this.colType==="name"?!1:this.columns.includes(e)}map(e){const t=new V;return this.forEach((n,s,a)=>t.push(...e(n,s,a))),t}forEach(e){this.columns.forEach((t,n)=>{const s=this.series[n];e(t,s,n)})}at(e,t=!1){const n={};return this.uniqueColumns.forEach(s=>{n[s]=this.get(s).at(e,t)}),n}filter(e){const t=new V;return this.columns.forEach((n,s)=>{const a=this.series[s];e(n,a,s)&&t.push(n,a)}),t}get byteLength(){return new vt(this.series.reduce((e,t)=>e.add(t.byteLength),vt.ZERO))}get digest(){const e={};return this.keys.forEach((t,n)=>{const s=this.series[n].digest;t in e?e[t].push(s):e[t]=[s]}),e}get length(){return this.series.reduce((e,t)=>e+t.length,0)}toString(){let e=`Frame{
37
37
  `;return this.uniqueColumns.forEach(t=>{e+=` ${t}: ${this.get(t).series.map(n=>n.toString()).join(",")}
38
- `}),e+="}",e}}const tn=i.z.object({keys:i.z.union([i.z.null().transform(()=>[]),i.z.number().array().optional().default([])]),series:i.z.union([i.z.null().transform(()=>[]),_e.crudeZ.array().optional().default([])])}),Ho=r=>{const{dataType:e,data:t,timeRange:n,alignment:s}=r;return new _e({data:t,dataType:e,timeRange:n,glBufferUsage:"static",alignment:s})},Ko=r=>({timeRange:r.timeRange,dataType:r.dataType,data:new Uint8Array(r.data.buffer),alignment:r.alignment}),Ye=Py.uint32,Zs=i.z.object({key:Ye,variant:i.z.string(),message:i.z.string(),lastReceived:z.z.optional()}),rn=i.z.object({key:Ye,name:i.z.string(),state:Zs.optional()}),Jo=rn.partial({key:!0}),nn="rack",qs=r=>r?Qe.JSON_CODEC.decodeString(r,ce):{},yr=i.z.string(),Fs=i.z.object({key:yr,variant:i.z.string(),details:ce.or(i.z.string().transform(qs))}),gr=i.z.object({key:yr,rack:Ye,name:i.z.string(),make:i.z.string(),model:i.z.string(),location:i.z.string(),configured:i.z.boolean().optional(),properties:ce.or(i.z.string().transform(qs)),state:Fs.optional()}),Xo=gr.extend({properties:i.z.unknown().transform(r=>Qe.JSON_CODEC.encodeString(r))}),sn="device",Se=r=>r?JSON.parse(r):{},We=i.z.union([i.z.string(),i.z.bigint().transform(r=>r.toString()),i.z.number().transform(r=>r.toString())]),Qo=i.z.enum(["info","success","error","warning"]),ir=i.z.object({task:We,variant:Qo,key:i.z.string().optional(),details:ce.or(i.z.string().transform(Se)).or(i.z.array(i.z.unknown())).or(i.z.null())}),pr=i.z.object({key:We,name:i.z.string(),type:i.z.string(),internal:i.z.boolean().optional(),config:ce.or(i.z.string().transform(qs)),state:ir.optional().nullable(),snapshot:i.z.boolean().optional()}),ec=pr.omit({key:!0}).extend({key:We.transform(r=>r.toString()).optional(),config:i.z.unknown().transform(r=>Qe.JSON_CODEC.encodeString(r))}),Ys=i.z.object({task:We,type:i.z.string(),key:i.z.string(),args:ce.or(i.z.string().transform(Se)).or(i.z.array(i.z.unknown())).or(i.z.null()).optional()}),an="task",Tg=r=>Number(BigInt(r)>>32n),et=i.z.string().uuid(),wr=i.z.object({key:et,name:i.z.string().min(1),color:i.z.string()}),Ws="label",ae=i.z.string().uuid(),Vs=i.z.string().min(1),mr=i.z.object({key:ae,name:Vs,timeRange:q.z,color:i.z.string().optional()}),tc=mr.partial({key:!0}),rc=r=>{const e=b(r),t=e.length===0;let n=!1;return t||(n=ae.safeParse(e[0]).success),{single:!Array.isArray(r),variant:n?"keys":"names",normalized:e,actual:r,empty:t}},Gs="range",Hs="range-alias",tt=i.z.string().uuid(),br=i.z.object({key:tt,username:i.z.string().min(1),firstName:i.z.string().default(""),lastName:i.z.string().default(""),rootUser:i.z.boolean().default(!0)}),nc=br.partial({key:!0,firstName:!0,lastName:!0}).omit({rootUser:!0}).extend({password:i.z.string().min(1)}),Ks="user",Nt=i.z.string().uuid(),on=i.z.object({key:Nt,name:i.z.string(),data:ce.or(i.z.string().transform(Se))}),sc=on.partial({key:!0}).transform(r=>({...r,data:JSON.stringify(r.data)})),Js="lineplot",It=i.z.string().uuid(),cn=i.z.object({key:It,name:i.z.string(),data:ce.or(i.z.string().transform(Se))}),ic=cn.partial({key:!0}).transform(r=>({...r,data:JSON.stringify(r.data)})),Xs="log",Ee=i.z.string().uuid(),ln=i.z.object({key:Ee,name:i.z.string(),layout:ce.or(i.z.string().transform(Se))}),hn="workspace",ac=ln.partial({key:!0}).transform(r=>({...r,layout:JSON.stringify(r.layout)})),oc=ln.omit({layout:!0}).extend({layout:i.z.string().transform(Se)}),rt=i.z.string().uuid(),un=i.z.object({key:rt,name:i.z.string(),data:ce.or(i.z.string().transform(Se)),snapshot:i.z.boolean()}),cc=un.partial({key:!0,snapshot:!0}).transform(r=>({...r,data:JSON.stringify(r.data)})),Qs=un.extend({data:i.z.string().transform(Se)}),ei="schematic",$t=i.z.string().uuid(),ti=i.z.object({key:$t,name:i.z.string(),data:ce.or(i.z.string().transform(Se))}),lc=ti.partial({key:!0}).transform(r=>({...r,data:JSON.stringify(r.data)})),ri=ti.extend({data:i.z.string().transform(Se)}),ni="table",si="builtin",hc="cluster",uc="node",vr=i.z.enum([Ws,Xs,zs,si,hc,en,uc,Ls,Gs,_s,Hs,Ks,hn,ei,Js,nn,sn,an,Es,ni]),ie=i.z.object({type:vr,key:i.z.string()}),dc=i.z.string().transform(r=>{const[e,t]=r.split(":");return{type:vr.parse(e),key:t??""}}),ht=i.z.union([dc,ie]),dt=class dt{constructor(e){l(this,"type");l(this,"key");if(e instanceof dt){this.type=e.type,this.key=e.key;return}if(typeof e=="string"){const[t,n]=e.split(":");this.type=t,this.key=n??"";return}this.type=e.type,this.key=e.key}toString(){return`${this.type}:${this.key}`}isType(){return this.key===""}matchesType(e){return this.type===e&&this.isType()}get payload(){return{type:this.type,key:this.key}}};l(dt,"z",i.z.union([i.z.instanceof(dt),ht.transform(e=>new dt(e))]));let E=dt;const Og=new E({type:si,key:"root"}),fc=i.z.object({type:i.z.number()}),yc=i.z.object({type:vr,fields:i.z.record(i.z.string(),fc)}),gc=i.z.object({id:E.z,name:i.z.string(),schema:yc.optional().nullable(),data:ce.optional().nullable()}).transform(r=>({key:r.id.toString(),...r})),Sg="to",Eg="from",zg=i.z.object({from:E.z,type:i.z.string(),to:E.z}),vs=r=>{const[e,t,n]=r.split("->");return{from:new E(e),type:t,to:new E(n)}};class ii{constructor(e,t){l(this,"key");l(this,"name");this.key=t,this.name=e}get ontologyID(){return pc(this.key)}}const pc=r=>new E({type:Ls,key:r}),Ng=i.z.object({group:js}),Ig=i.z.object({parent:ie,key:zt.optional(),name:Qr}),$g=i.z.object({key:zt,name:Qr}),xg=i.z.object({keys:i.z.array(zt)});var he;let kg=(he=class{constructor(e){l(this,"client");this.client=e}async create(e,t,n){return(await m(this.client,he.CREATE_ENDPOINT,{parent:e,name:t,key:n},Ig,Ng)).group}async rename(e,t){await m(this.client,he.RENAME_ENDPOINT,{key:e,name:t},$g,i.z.object({}))}async delete(e){await m(this.client,he.DELETE_ENDPOINT,{keys:e},xg,i.z.object({}))}},l(he,"CREATE_ENDPOINT","/ontology/create-group"),l(he,"RENAME_ENDPOINT","/ontology/rename-group"),l(he,"DELETE_ENDPOINT","/ontology/delete-group"),he),wc=class{constructor(e){l(this,"creator");this.creator=new kg(e)}async create(e,t,n){return this.sugar(await this.creator.create(e,t,n))}async rename(e,t){return await this.creator.rename(e,t)}async delete(...e){return await this.creator.delete(e)}sugar(e){return new ii(e.name,e.key)}};const Ag=Object.freeze(Object.defineProperty({__proto__:null,Client:wc,Group:ii,ONTOLOGY_TYPE:Ls,analyzeParams:vg,groupZ:js,keyZ:zt,nameZ:Qr,ontologyID:pc},Symbol.toStringTag,{value:"Module"})),Ug="/ontology/add-children",Cg="/ontology/remove-children",Rg="/ontology/move-children",aa=i.z.object({id:ie,children:ie.array()}),Bg=i.z.object({from:ie,to:ie,children:ie.array()}),kn=i.z.object({});let Pg=class{constructor(e){l(this,"client");this.client=e}async addChildren(e,...t){await m(this.client,Ug,{id:new E(e).payload,children:t.map(n=>new E(n).payload)},aa,kn)}async removeChildren(e,...t){await m(this.client,Cg,{id:new E(e).payload,children:t.map(n=>new E(n).payload)},aa,kn)}async moveChildren(e,t,...n){const s={from:new E(e).payload,to:new E(t).payload,children:n.map(a=>new E(a).payload)};await m(this.client,Rg,s,Bg,kn)}};const Dg="/ontology/retrieve",Mg=i.z.object({ids:ie.array().optional(),children:i.z.boolean().optional(),parents:i.z.boolean().optional(),includeSchema:i.z.boolean().optional(),excludeFieldData:i.z.boolean().optional(),term:i.z.string().optional(),limit:i.z.number().optional(),offset:i.z.number().optional(),types:vr.array().optional()}),jg=i.z.object({resources:gc.array()}),Mr=r=>b(r).map(e=>new E(e).payload);let mc=class{constructor(e,t){l(this,"type","ontology");l(this,"groups");l(this,"client");l(this,"writer");l(this,"framer");this.client=e,this.writer=new Pg(e),this.groups=new wc(e),this.framer=t}async search(e,t){return await this.execRetrieve({term:e,...t})}async retrieve(e,t){const n=await this.execRetrieve({ids:Mr(e),...t});if(Array.isArray(e))return n;if(n.length===0)throw new ke(`No resource found with ID ${gg.naturalLanguageJoin(b(e).map(s=>new E(s).toString()))}`);return n[0]}async page(e,t,n){return await this.execRetrieve({offset:e,limit:t,...n})}async retrieveChildren(e,t){return await this.execRetrieve({ids:Mr(e),children:!0,...t})}async retrieveParents(e,t){return await this.execRetrieve({ids:Mr(e),parents:!0,...t})}async addChildren(e,...t){return await this.writer.addChildren(e,...t)}async removeChildren(e,...t){return await this.writer.removeChildren(e,...t)}async moveChildren(e,t,...n){return await this.writer.moveChildren(e,t,...n)}async openChangeTracker(){return await Tr.open(this.framer,this)}async openDependentTracker(e){return await dn.open(e,this.framer,this)}newSearcherWithOptions(e){return{type:this.type,search:t=>this.search(t,e),retrieve:t=>this.retrieve(t,e),page:(t,n)=>this.page(t,n,e)}}async execRetrieve(e){const{resources:t}=await m(this.client,Dg,e,Mg,jg);return t}};const oa="sy_ontology_resource_set",ca="sy_ontology_resource_delete",la="sy_ontology_relationship_set",ha="sy_ontology_relationship_delete";class Tr{constructor(e,t){l(this,"relationships");l(this,"resources");l(this,"resourceObs");l(this,"relationshipObs");l(this,"streamer");l(this,"client");l(this,"closePromise");this.relationshipObs=new He.Observer,this.relationships=this.relationshipObs,this.resourceObs=new He.Observer,this.resources=this.resourceObs,this.client=t,this.streamer=e,this.closePromise=this.start()}async close(){this.streamer.close(),await this.closePromise}async start(){for await(const e of this.streamer)await this.update(e)}async update(e){const t=await this.parseResourceSets(e),n=this.parseResourceDeletes(e);t.concat(n).length>0&&this.resourceObs.notify(t.concat(n));const a=this.parseRelationshipSets(e),o=this.parseRelationshipDeletes(e);a.concat(o).length>0&&this.relationshipObs.notify(a.concat(o))}parseRelationshipSets(e){const t=e.get(la);return t.length===0?[]:Array.from(t.as("string")).map(n=>({variant:"set",key:vs(n),value:void 0}))}parseRelationshipDeletes(e){const t=e.get(ha);return t.length===0?[]:Array.from(t.as("string")).map(n=>({variant:"delete",key:vs(n)}))}async parseResourceSets(e){const t=e.get(oa);if(t.length===0)return[];const n=Array.from(t.as("string")).map(s=>new E(s));try{return(await this.client.retrieve(n)).map(a=>({variant:"set",key:a.id,value:a}))}catch(s){if(s instanceof ke)return[];throw s}}parseResourceDeletes(e){const t=e.get(ca);return t.length===0?[]:Array.from(t.as("string")).map(n=>({variant:"delete",key:new E(n)}))}static async open(e,t){const n=await e.openStreamer([oa,ca,la,ha]);return new Tr(n,t)}}const ua=r=>r==="from"?"to":"from";class dn extends He.Observer{constructor({target:t,dependents:n,relationshipType:s="parent",relationshipDirection:a="from",resourceType:o},c,h){super();l(this,"internal");l(this,"target");l(this,"relDir");l(this,"resourceType");l(this,"dependents");l(this,"client");l(this,"relType");l(this,"handleResourceChange",t=>{this.dependents=this.dependents.map(n=>{const s=t.find(a=>a.key.toString()==n.id.toString());return s==null||s.variant==="delete"?n:s.value}),this.notify(this.dependents)});l(this,"handleRelationshipChange",t=>{const n=t.filter(a=>a.variant==="delete"&&a.key[this.relDir].toString()===this.target.toString()&&(this.resourceType==null||a.key[ua(this.relDir)].type===this.resourceType));this.dependents=this.dependents.filter(a=>!n.some(o=>o.key.to.toString()===a.id.toString()&&o.key.type===this.relType));const s=t.filter(a=>a.variant==="set"&&a.key.type===this.relType&&a.key[this.relDir].toString()===this.target.toString()&&(this.resourceType==null||a.key[ua(this.relDir)].type===this.resourceType));if(s.length===0)return this.notify(this.dependents);this.client.retrieve(s.map(a=>a.key.to)).then(a=>{this.dependents=this.dependents.concat(a),this.notify(this.dependents)}).catch(console.error)});this.resourceType=o,this.internal=c,this.target=t,this.dependents=n,this.resourceType!=null&&(this.dependents=this.dependents.filter(d=>d.id.type===this.resourceType)),this.client=h,this.relType=s,this.relDir=a,this.internal.resources.onChange(this.handleResourceChange),this.internal.relationships.onChange(this.handleRelationshipChange)}static async open(t,n,s){const a=await Tr.open(n,s);return new dn(t,a,s)}async close(){await this.internal.close()}}const Lg=Object.freeze(Object.defineProperty({__proto__:null,BUILTIN_TYPE:si,CLUSTER_TYPE:hc,ChangeTracker:Tr,Client:mc,DependentTracker:dn,FROM_RELATIONSHIP_DIRECTION:Eg,ID:E,NODE_TYPE:uc,ROOT_ID:Og,TO_RELATIONSHIP_DIRECTION:Sg,crudeIDZ:ht,idZ:ie,parseIDs:Mr,parseRelationship:vs,relationshipSchemaZ:zg,resourceTypeZ:vr,resourceZ:gc,schemaFieldZ:fc,schemaZ:yc,stringIDZ:dc},Symbol.toStringTag,{value:"Module"})),Or=i.z.string().uuid(),fn=i.z.object({key:Or,subjects:X(ie),objects:X(ie),actions:X(_r)}),bc=i.z.object({key:Or.optional(),subjects:ht.array().or(ht),objects:ht.array().or(ht),actions:_r.array().or(_r)}),_g=i.z.object({keys:Or.array().optional(),subjects:ie.array().optional()}),Zg=i.z.object({policies:X(fn)}),qg="/access/policy/retrieve";let Fg=class{constructor(e){l(this,"client");this.client=e}async retrieve(e){return(await m(this.client,qg,e,_g,Zg)).policies}};const Yg=i.z.object({policies:fn.partial({key:!0}).array()}),Wg=i.z.object({policies:fn.array()}),Vg=i.z.object({keys:Or.array()}),Gg=i.z.object({}),Hg="/access/policy/create",Kg="/access/policy/delete";let Jg=class{constructor(e){l(this,"client");this.client=e}async create(e){const n=bc.array().parse(b(e)).map(a=>({objects:b(a.objects),actions:b(a.actions),subjects:b(a.subjects)}));return(await m(this.client,Hg,{policies:n},Yg,Wg)).policies}async delete(e){await m(this.client,Kg,{keys:b(e)},Vg,Gg)}},vc=class{constructor(e){l(this,"retriever");l(this,"writer");this.retriever=new Fg(e),this.writer=new Jg(e)}async create(e){const t=Array.isArray(e),n=await this.writer.create(e);return t?n:n[0]}async retrieve(e){const t=Array.isArray(e),n=await this.retriever.retrieve({keys:b(e)});return t?n:n[0]}async retrieveFor(e){const t=b(e).map(n=>new E(n).payload);return await this.retriever.retrieve({subjects:t})}async delete(e){await this.writer.delete(e)}};const Xg=r=>new E({type:Es,key:r}),Qg=new E({type:zs,key:""}),ep=Object.freeze(Object.defineProperty({__proto__:null,ALLOW_ALL_ONTOLOGY_ID:Qg,ALLOW_ALL_ONTOLOGY_TYPE:zs,Client:vc,ONTOLOGY_TYPE:Es,keyZ:Or,newZ:bc,ontologyID:Xg,policyZ:fn},Symbol.toStringTag,{value:"Module"}));let Tc=class{constructor(e){l(this,"policy");this.policy=new vc(e)}};const tp=Object.freeze(Object.defineProperty({__proto__:null,ALL_ACTION:ro,CREATE_ACTION:no,Client:Tc,DELETE_ACTION:so,RETRIEVE_ACTION:io,UPDATE_ACTION:ao,actionZ:_r},Symbol.toStringTag,{value:"Module"})),rp=new Error("request for lock canceled");var np=function(r,e,t,n){function s(a){return a instanceof t?a:new t(function(o){o(a)})}return new(t||(t=Promise))(function(a,o){function c(f){try{d(n.next(f))}catch(u){o(u)}}function h(f){try{d(n.throw(f))}catch(u){o(u)}}function d(f){f.done?a(f.value):s(f.value).then(c,h)}d((n=n.apply(r,e||[])).next())})};class sp{constructor(e,t=rp){this._value=e,this._cancelError=t,this._queue=[],this._weightedWaiters=[]}acquire(e=1,t=0){if(e<=0)throw new Error(`invalid weight ${e}: must be positive`);return new Promise((n,s)=>{const a={resolve:n,reject:s,weight:e,priority:t},o=Oc(this._queue,c=>t<=c.priority);o===-1&&e<=this._value?this._dispatchItem(a):this._queue.splice(o+1,0,a)})}runExclusive(e){return np(this,arguments,void 0,function*(t,n=1,s=0){const[a,o]=yield this.acquire(n,s);try{return yield t(a)}finally{o()}})}waitForUnlock(e=1,t=0){if(e<=0)throw new Error(`invalid weight ${e}: must be positive`);return this._couldLockImmediately(e,t)?Promise.resolve():new Promise(n=>{this._weightedWaiters[e-1]||(this._weightedWaiters[e-1]=[]),ip(this._weightedWaiters[e-1],{resolve:n,priority:t})})}isLocked(){return this._value<=0}getValue(){return this._value}setValue(e){this._value=e,this._dispatchQueue()}release(e=1){if(e<=0)throw new Error(`invalid weight ${e}: must be positive`);this._value+=e,this._dispatchQueue()}cancel(){this._queue.forEach(e=>e.reject(this._cancelError)),this._queue=[]}_dispatchQueue(){for(this._drainUnlockWaiters();this._queue.length>0&&this._queue[0].weight<=this._value;)this._dispatchItem(this._queue.shift()),this._drainUnlockWaiters()}_dispatchItem(e){const t=this._value;this._value-=e.weight,e.resolve([t,this._newReleaser(e.weight)])}_newReleaser(e){let t=!1;return()=>{t||(t=!0,this.release(e))}}_drainUnlockWaiters(){if(this._queue.length===0)for(let e=this._value;e>0;e--){const t=this._weightedWaiters[e-1];t&&(t.forEach(n=>n.resolve()),this._weightedWaiters[e-1]=[])}else{const e=this._queue[0].priority;for(let t=this._value;t>0;t--){const n=this._weightedWaiters[t-1];if(!n)continue;const s=n.findIndex(a=>a.priority<=e);(s===-1?n:n.splice(0,s)).forEach(a=>a.resolve())}}}_couldLockImmediately(e,t){return(this._queue.length===0||this._queue[0].priority<t)&&e<=this._value}}function ip(r,e){const t=Oc(r,n=>e.priority<=n.priority);r.splice(t+1,0,e)}function Oc(r,e){for(let t=r.length-1;t>=0;t--)if(e(r[t]))return t;return-1}var ap=function(r,e,t,n){function s(a){return a instanceof t?a:new t(function(o){o(a)})}return new(t||(t=Promise))(function(a,o){function c(f){try{d(n.next(f))}catch(u){o(u)}}function h(f){try{d(n.throw(f))}catch(u){o(u)}}function d(f){f.done?a(f.value):s(f.value).then(c,h)}d((n=n.apply(r,e||[])).next())})};class op{constructor(e){this._semaphore=new sp(1,e)}acquire(){return ap(this,arguments,void 0,function*(e=0){const[,t]=yield this._semaphore.acquire(1,e);return t})}runExclusive(e,t=0){return this._semaphore.runExclusive(()=>e(),1,t)}isLocked(){return this._semaphore.isLocked()}waitForUnlock(e=0){return this._semaphore.waitForUnlock(1,e)}release(){this._semaphore.isLocked()&&this._semaphore.release()}cancel(){return this._semaphore.cancel()}}const ai=(r,e,{convertNumericStrings:t=!0}={})=>{const n=!Array.isArray(r);let s=b(r);const a=s[0],o=typeof a;let c;return o==="string"&&t&&!isNaN(parseInt(a))&&"number"in e?(c=e.number,s=s.map(h=>parseInt(h))):c=e[o],{single:n,variant:c,normalized:s,actual:r}},yn=(r,e,t,n)=>{if(n){if(t.length===0)throw new Je(`${r} not found matching ${JSON.stringify(e)}`);if(t.length>1)throw new Xe(`Expected one ${r} matching ${JSON.stringify(e)}, but found ${t.length}`)}},cp=i.z.object({leaseholder:i.z.number().optional(),keys:Q.array().optional(),names:i.z.string().array().optional(),search:i.z.string().optional(),rangeKey:i.z.string().optional(),limit:i.z.number().optional(),offset:i.z.number().optional(),dataTypes:x.z.array().optional(),notDataTypes:x.z.array().optional(),virtual:i.z.boolean().optional(),isIndex:i.z.boolean().optional(),internal:i.z.boolean().optional()}),lp=i.z.object({channels:X(fr)}),Oe=r=>(Array.isArray(r)&&r.length>0&&typeof r[0]=="object"?r=r.map(e=>e.key):typeof r=="object"&&"key"in r&&(r=[r.key]),ai(r,{number:"keys",string:"names"})),Yr=class Yr{constructor(e){l(this,"client");this.client=e}async search(e,t){return await this.execute({search:e,...t})}async retrieve(e,t){const n=Oe(e),{variant:s}=n;let{normalized:a}=n;return s==="keys"&&a.indexOf(0)!==-1&&(a=a.filter(o=>o!==0)),a.length===0?[]:await this.execute({[s]:a,...t})}async page(e,t,n){return await this.execute({offset:e,limit:t,...n})}async execute(e){const[t,n]=await this.client.send(Yr.ENDPOINT,e,cp,lp);if(n!=null)throw n;return t.channels}};l(Yr,"ENDPOINT","/channel/retrieve");let ar=Yr;class oi{constructor(e){l(this,"cache");l(this,"namesToKeys");l(this,"wrapped");this.cache=new Map,this.namesToKeys=new Map,this.wrapped=e}async search(e,t){return await this.wrapped.search(e,t)}async page(e,t,n){return await this.wrapped.page(e,t,n)}async retrieve(e,t){const{normalized:n}=Oe(e),s=[],a=[];if(n.forEach(c=>{const h=this.get(c);h!=null?s.push(...h):a.push(c)}),a.length===0)return s;const o=await this.wrapped.retrieve(a,t);return this.set(o),s.concat(o)}delete(e){const{variant:t,normalized:n}=Oe(e);t==="names"?n.forEach(s=>{const a=this.namesToKeys.get(s);a!=null&&(a.forEach(o=>this.cache.delete(o)),this.namesToKeys.delete(s))}):n.forEach(s=>{const a=this.cache.get(s);a!=null&&(this.cache.delete(s),this.namesToKeys.delete(a.name))})}rename(e,t){e.forEach((n,s)=>{const a=t[s],o=this.cache.get(n);if(o==null)return;this.cache.delete(n);const c=this.namesToKeys.get(o.name);c!=null&&(c.delete(n),c.size===0&&this.namesToKeys.delete(o.name)),o.name=a,this.cache.set(n,o);const h=this.namesToKeys.get(a);h==null?this.namesToKeys.set(a,new Set([n])):h.add(n)})}set(e){e.forEach(t=>{this.cache.set(t.key,t);const n=this.namesToKeys.get(t.name);n==null?this.namesToKeys.set(t.name,new Set([t.key])):n.add(t.key)})}get(e){if(typeof e=="number"){const s=this.cache.get(e);return s==null?void 0:[s]}const t=this.namesToKeys.get(e);if(t==null)return;const n=[];if(t.forEach(s=>{const a=this.cache.get(s);a!=null&&n.push(a)}),n.length!==0)return n}}class Sc{constructor(e,t){l(this,"mu",new op);l(this,"requests",new Map);l(this,"wrapped");l(this,"debouncedRun");this.wrapped=e,this.debouncedRun=Qf(()=>{this.run()},t)}async search(e,t){return await this.wrapped.search(e,t)}async page(e,t,n){return await this.wrapped.page(e,t,n)}async retrieve(e){const{normalized:t,variant:n}=Oe(e);return n==="names"?await this.wrapped.retrieve(t):await new Promise((a,o)=>{this.mu.runExclusive(()=>{this.requests.set(t,{resolve:a,reject:o}),this.debouncedRun()})})}async run(){await this.mu.runExclusive(async()=>{const e=new Set;this.requests.forEach((t,n)=>n.forEach(s=>e.add(s)));try{const t=await this.wrapped.retrieve(Array.from(e));this.requests.forEach((n,s)=>n.resolve(t.filter(a=>s.includes(a.key))))}catch(t){this.requests.forEach(n=>n.reject(t))}finally{this.requests.clear()}})}}const Ec=async(r,e)=>{const{normalized:t}=Oe(e),n=await r.retrieve(t),s=[];if(t.forEach(a=>{n.find(o=>o.name===a||o.key===a)==null&&s.push(a)}),s.length>0)throw new ke(`Could not find channels: ${JSON.stringify(s)}`);return n};class ci{constructor({dataType:e,name:t,leaseholder:n=0,key:s=0,isIndex:a=!1,index:o=0,internal:c=!1,virtual:h=!1,frameClient:d,alias:f,expression:u="",requires:N=[]}){l(this,"_frameClient");l(this,"key");l(this,"name");l(this,"dataType");l(this,"leaseholder");l(this,"index");l(this,"isIndex");l(this,"internal");l(this,"alias");l(this,"virtual");l(this,"expression");l(this,"requires");this.key=s,this.name=t,this.dataType=new x(e),this.leaseholder=n,this.index=o,this.isIndex=a,this.internal=c,this.alias=f,this.virtual=h,this.expression=u,this.requires=N??[],this._frameClient=d??null}get framer(){if(this._frameClient==null)throw new F("cannot read from a channel that has not been created");return this._frameClient}get payload(){return fr.parse({key:this.key,name:this.name,dataType:this.dataType.valueOf(),leaseholder:this.leaseholder,index:this.index,isIndex:this.isIndex,internal:this.internal,virtual:this.virtual,expression:this.expression,requires:this.requires})}get isCalculated(){return or(this.payload)}get ontologyID(){return Ic(this.key)}async read(e){return await this.framer.read(e,this.key)}async write(e,t){return await this.framer.write(e,this.key,t)}}const hp="/channel/retrieve-group",up=i.z.object({}),dp=i.z.object({group:js});let zc=class{constructor(e,t,n,s){l(this,"type",en);l(this,"frameClient");l(this,"client");l(this,"retriever");l(this,"writer");this.frameClient=e,this.retriever=t,this.client=n,this.writer=s}async create(e,t={}){const{retrieveIfNameExists:n=!1}=t,s=!Array.isArray(e);let a=b(e),o=[];if(n){const c=await this.retriever.retrieve(a.map(d=>d.name)),h=new Set(c.map(d=>d.name));a=a.filter(d=>!h.has(d.name)),o=this.sugar(c)}return o=o.concat(this.sugar(await this.writer.create(a))),s?o[0]:o}async retrieve(e,t){const n=!Array.isArray(e),s=this.sugar(await this.retriever.retrieve(e,t));return yn("channel",e,s,n),n?s[0]:s}async search(e,t){return this.sugar(await this.retriever.search(e,t))}async delete(e){const{normalized:t,variant:n}=Oe(e);return n==="keys"?await this.writer.delete({keys:t}):await this.writer.delete({names:t})}async rename(e,t){return await this.writer.rename(b(e),b(t))}newSearcherWithOptions(e){return{type:this.type,search:async t=>await this.search(t,e),retrieve:async t=>await this.retrieve(t,e),page:async(t,n)=>await this.page(t,n,e)}}async page(e,t,n){return this.sugar(await this.retriever.page(e,t,n))}createDebouncedBatchRetriever(e=10){return new oi(new Sc(new ar(this.client),e))}sugar(e){const{frameClient:t}=this;return e.map(n=>new ci({...n,frameClient:t}))}async retrieveGroup(){const e=await m(this.client,hp,{},up,dp);return new ii(e.group.name,e.group.key)}};const or=({virtual:r,expression:e})=>r&&e!=="",Nc=async(r,e)=>{if(!or(e))return e.index;for(const t of e.requires){const n=await r(t);if(n==null)return null;if(!n.virtual)return n.index}for(const t of e.requires){const n=await r(t);if(n==null)return null;if(or(n)){const s=await Nc(r,n);if(s!=null)return s}}return null},Ic=r=>new E({type:en,key:r.toString()}),fp=i.z.object({channels:Go.array()}),yp=i.z.object({channels:fr.array()}),gp=i.z.object({keys:Q.array().optional(),names:dr.array().optional()}),pp=i.z.object({}),wp=i.z.object({keys:Q.array(),names:dr.array()}),mp=i.z.object({}),bp="/channel/create",vp="/channel/delete",Tp="/channel/rename";let $c=class{constructor(e,t){l(this,"client");l(this,"cache");this.client=e,this.cache=t}async create(e){const{channels:t}=await m(this.client,bp,{channels:e},fp,yp);return this.cache.set(t),t}async delete(e){await m(this.client,vp,e,gp,pp),e.keys!=null&&this.cache.delete(e.keys),e.names!=null&&this.cache.delete(e.names)}async rename(e,t){await m(this.client,Tp,{keys:e,names:t},wp,mp),this.cache.rename(e,t)}};const Op=Object.freeze(Object.defineProperty({__proto__:null,CacheRetriever:oi,Channel:ci,Client:zc,ClusterRetriever:ar,DebouncedBatchRetriever:Sc,ONTOLOGY_TYPE:en,Writer:$c,analyzeParams:Oe,channelZ:fr,isCalculated:or,keyZ:Q,nameZ:dr,newZ:Go,ontologyID:Ic,resolveCalculatedIndex:Nc,retrieveRequired:Ec},Symbol.toStringTag,{value:"Module"})),Sp=i.z.object({keys:tt.array().optional(),usernames:i.z.string().array().optional()}),Ep=i.z.object({users:X(br)}),zp="/user/retrieve";let Np=class{constructor(e){l(this,"client");this.client=e}async retrieve(e){return(await m(this.client,zp,e,Sp,Ep)).users}};const Ip=i.z.object({users:nc.array()}),$p=i.z.object({users:br.array()}),xp=i.z.object({key:tt,username:i.z.string().min(1)}),kp=i.z.object({}),Ap=i.z.object({key:tt,firstName:i.z.string().optional(),lastName:i.z.string().optional()}),Up=i.z.object({}),Cp=i.z.object({keys:tt.array()}),Rp=i.z.object({}),Bp="/user/create",Pp="/user/change-username",Dp="/user/rename",Mp="/user/delete";let jp=class{constructor(e){l(this,"client");this.client=e}async create(e){return(await m(this.client,Bp,{users:b(e)},Ip,$p)).users}async changeUsername(e,t){await m(this.client,Pp,{key:e,username:t},xp,kp)}async rename(e,t,n){await m(this.client,Dp,{key:e,firstName:t,lastName:n},Ap,Up)}async delete(e){await m(this.client,Mp,{keys:b(e)},Cp,Rp)}},xc=class{constructor(e){l(this,"reader");l(this,"writer");this.writer=new jp(e),this.reader=new Np(e)}async create(e){const t=Array.isArray(e),n=await this.writer.create(e);return t?n:n[0]}async changeUsername(e,t){await this.writer.changeUsername(e,t)}async retrieve(e){const t=Array.isArray(e),n=await this.reader.retrieve({keys:b(e)});if(t)return n;if(n.length===0)throw new Je(`No user with key ${e} found`);if(n.length>1)throw new Xe(`Multiple users found with key ${e}`);return n[0]}async retrieveByName(e){const t=Array.isArray(e),n=await this.reader.retrieve({usernames:b(e)});if(t)return n;if(n.length===0)throw new Je(`No user with username ${e} found`);if(n.length>1)throw new Xe(`Multiple users found with username ${e}`);return n[0]}async rename(e,t,n){await this.writer.rename(e,t,n)}async delete(e){await this.writer.delete(e)}};const Lp=r=>new E({type:Ks,key:r}),_p=Object.freeze(Object.defineProperty({__proto__:null,Client:xc,ONTOLOGY_TYPE:Ks,keyZ:tt,newZ:nc,ontologyID:Lp,userZ:br},Symbol.toStringTag,{value:"Module"})),Zp=i.z.object({username:i.z.string(),password:i.z.string()}),qp=i.z.object({token:i.z.string(),user:br}),da="/auth/login",Fp=3,Yp="/auth/change-password",Wp=i.z.object({username:i.z.string(),password:i.z.string(),newPassword:i.z.string().min(1)}),Vp=i.z.object({}),Gp=[ps,ws];let Hp=class{constructor(e,t){l(this,"token");l(this,"client");l(this,"credentials");l(this,"authenticating");l(this,"authenticated");l(this,"user");l(this,"retryCount");this.client=e,this.authenticated=!1,this.credentials=t,this.retryCount=0}async changePassword(e){if(!this.authenticated)throw new Error("Not authenticated");await m(this.client,Yp,{username:this.credentials.username,password:this.credentials.password,newPassword:e},Wp,Vp),this.credentials.password=e}middleware(){const e=async(t,n)=>{if(!this.authenticated&&!t.target.endsWith(da)){this.authenticating??(this.authenticating=new Promise((c,h)=>{this.client.send(da,this.credentials,Zp,qp).then(([d,f])=>{if(f!=null)return c(f);this.token=d==null?void 0:d.token,this.user=d==null?void 0:d.user,this.authenticated=!0,c(null)}).catch(h)}));const o=await this.authenticating;if(o!=null)return[t,o]}t.params.Authorization=`Bearer ${this.token}`;const[s,a]=await n(t);return Gp.some(o=>o.matches(a))&&this.retryCount<Fp?(this.authenticated=!1,this.authenticating=void 0,this.retryCount+=1,e(t,n)):(this.retryCount=0,[s,a])};return e}};const kc=i.z.enum(["disconnected","connecting","connected","failed"]),Ac=i.z.object({status:kc,error:i.z.instanceof(Error).optional(),message:i.z.string().optional(),clusterKey:i.z.string(),clientVersion:i.z.string(),clientServerCompatible:i.z.boolean(),nodeVersion:i.z.string().optional()}),Kp=i.z.object({clusterKey:i.z.string(),nodeVersion:i.z.string().optional()}),fa={clusterKey:"",status:"disconnected",error:void 0,message:"Disconnected",clientServerCompatible:!1,clientVersion:"0.42.0"},ya=(r,e,t)=>{const n=t?"cluster":"client";return`Synnax cluster node version ${r!=null?`${r} `:""}is too ${t?"old":"new"} for client version ${e}.
38
+ `}),e+="}",e}}const tn=i.z.object({keys:i.z.union([i.z.null().transform(()=>[]),i.z.number().array().optional().default([])]),series:i.z.union([i.z.null().transform(()=>[]),_e.crudeZ.array().optional().default([])])}),Ho=r=>{const{dataType:e,data:t,timeRange:n,alignment:s}=r;return new _e({data:t,dataType:e,timeRange:n,glBufferUsage:"static",alignment:s})},Ko=r=>({timeRange:r.timeRange,dataType:r.dataType,data:new Uint8Array(r.data.buffer),alignment:r.alignment}),Ye=Py.uint32,Zs=i.z.object({key:Ye,variant:i.z.string(),message:i.z.string(),lastReceived:z.z.optional()}),rn=i.z.object({key:Ye,name:i.z.string(),state:Zs.optional()}),Jo=rn.partial({key:!0}),nn="rack",qs=r=>r?Qe.JSON_CODEC.decodeString(r,ce):{},yr=i.z.string(),Fs=i.z.object({key:yr,variant:i.z.string(),details:ce.or(i.z.string().transform(qs))}),gr=i.z.object({key:yr,rack:Ye,name:i.z.string(),make:i.z.string(),model:i.z.string(),location:i.z.string(),configured:i.z.boolean().optional(),properties:ce.or(i.z.string().transform(qs)),state:Fs.optional()}),Xo=gr.extend({properties:i.z.unknown().transform(r=>Qe.JSON_CODEC.encodeString(r))}),sn="device",Se=r=>r?JSON.parse(r):{},We=i.z.union([i.z.string(),i.z.bigint().transform(r=>r.toString()),i.z.number().transform(r=>r.toString())]),Qo=i.z.enum(["info","success","error","warning"]),ir=i.z.object({task:We,variant:Qo,key:i.z.string().optional(),details:ce.or(i.z.string().transform(Se)).or(i.z.array(i.z.unknown())).or(i.z.null())}),pr=i.z.object({key:We,name:i.z.string(),type:i.z.string(),internal:i.z.boolean().optional(),config:ce.or(i.z.string().transform(qs)),state:ir.optional().nullable(),snapshot:i.z.boolean().optional()}),ec=pr.omit({key:!0}).extend({key:We.transform(r=>r.toString()).optional(),config:i.z.unknown().transform(r=>Qe.JSON_CODEC.encodeString(r))}),Ys=i.z.object({task:We,type:i.z.string(),key:i.z.string(),args:ce.or(i.z.string().transform(Se)).or(i.z.array(i.z.unknown())).or(i.z.null()).optional()}),an="task",Tg=r=>Number(BigInt(r)>>32n),et=i.z.string().uuid(),wr=i.z.object({key:et,name:i.z.string().min(1),color:i.z.string()}),Ws="label",ae=i.z.string().uuid(),Vs=i.z.string().min(1),mr=i.z.object({key:ae,name:Vs,timeRange:q.z,color:i.z.string().optional()}),tc=mr.partial({key:!0}),rc=r=>{const e=b(r),t=e.length===0;let n=!1;return t||(n=ae.safeParse(e[0]).success),{single:!Array.isArray(r),variant:n?"keys":"names",normalized:e,actual:r,empty:t}},Gs="range",Hs="range-alias",tt=i.z.string().uuid(),br=i.z.object({key:tt,username:i.z.string().min(1),firstName:i.z.string().default(""),lastName:i.z.string().default(""),rootUser:i.z.boolean().default(!0)}),nc=br.partial({key:!0,firstName:!0,lastName:!0}).omit({rootUser:!0}).extend({password:i.z.string().min(1)}),Ks="user",Nt=i.z.string().uuid(),on=i.z.object({key:Nt,name:i.z.string(),data:ce.or(i.z.string().transform(Se))}),sc=on.partial({key:!0}).transform(r=>({...r,data:JSON.stringify(r.data)})),Js="lineplot",It=i.z.string().uuid(),cn=i.z.object({key:It,name:i.z.string(),data:ce.or(i.z.string().transform(Se))}),ic=cn.partial({key:!0}).transform(r=>({...r,data:JSON.stringify(r.data)})),Xs="log",Ee=i.z.string().uuid(),ln=i.z.object({key:Ee,name:i.z.string(),layout:ce.or(i.z.string().transform(Se))}),hn="workspace",ac=ln.partial({key:!0}).transform(r=>({...r,layout:JSON.stringify(r.layout)})),oc=ln.omit({layout:!0}).extend({layout:i.z.string().transform(Se)}),rt=i.z.string().uuid(),un=i.z.object({key:rt,name:i.z.string(),data:ce.or(i.z.string().transform(Se)),snapshot:i.z.boolean()}),cc=un.partial({key:!0,snapshot:!0}).transform(r=>({...r,data:JSON.stringify(r.data)})),Qs=un.extend({data:i.z.string().transform(Se)}),ei="schematic",$t=i.z.string().uuid(),ti=i.z.object({key:$t,name:i.z.string(),data:ce.or(i.z.string().transform(Se))}),lc=ti.partial({key:!0}).transform(r=>({...r,data:JSON.stringify(r.data)})),ri=ti.extend({data:i.z.string().transform(Se)}),ni="table",si="builtin",hc="cluster",uc="node",vr=i.z.enum([Ws,Xs,zs,si,hc,en,uc,Ls,Gs,_s,Hs,Ks,hn,ei,Js,nn,sn,an,Es,ni]),ie=i.z.object({type:vr,key:i.z.string()}),dc=i.z.string().transform(r=>{const[e,t]=r.split(":");return{type:vr.parse(e),key:t??""}}),ht=i.z.union([dc,ie]),dt=class dt{constructor(e){l(this,"type");l(this,"key");if(e instanceof dt){this.type=e.type,this.key=e.key;return}if(typeof e=="string"){const[t,n]=e.split(":");this.type=t,this.key=n??"";return}this.type=e.type,this.key=e.key}toString(){return`${this.type}:${this.key}`}isType(){return this.key===""}matchesType(e){return this.type===e&&this.isType()}get payload(){return{type:this.type,key:this.key}}};l(dt,"z",i.z.union([i.z.instanceof(dt),ht.transform(e=>new dt(e))]));let E=dt;const Og=new E({type:si,key:"root"}),fc=i.z.object({type:i.z.number()}),yc=i.z.object({type:vr,fields:i.z.record(i.z.string(),fc)}),gc=i.z.object({id:E.z,name:i.z.string(),schema:yc.optional().nullable(),data:ce.optional().nullable()}).transform(r=>({key:r.id.toString(),...r})),Sg="to",Eg="from",zg=i.z.object({from:E.z,type:i.z.string(),to:E.z}),vs=r=>{const[e,t,n]=r.split("->");return{from:new E(e),type:t,to:new E(n)}};class ii{constructor(e,t){l(this,"key");l(this,"name");this.key=t,this.name=e}get ontologyID(){return pc(this.key)}}const pc=r=>new E({type:Ls,key:r}),Ng=i.z.object({group:js}),Ig=i.z.object({parent:ie,key:zt.optional(),name:Qr}),$g=i.z.object({key:zt,name:Qr}),xg=i.z.object({keys:i.z.array(zt)});var he;let kg=(he=class{constructor(e){l(this,"client");this.client=e}async create(e,t,n){return(await m(this.client,he.CREATE_ENDPOINT,{parent:e,name:t,key:n},Ig,Ng)).group}async rename(e,t){await m(this.client,he.RENAME_ENDPOINT,{key:e,name:t},$g,i.z.object({}))}async delete(e){await m(this.client,he.DELETE_ENDPOINT,{keys:e},xg,i.z.object({}))}},l(he,"CREATE_ENDPOINT","/ontology/create-group"),l(he,"RENAME_ENDPOINT","/ontology/rename-group"),l(he,"DELETE_ENDPOINT","/ontology/delete-group"),he),wc=class{constructor(e){l(this,"creator");this.creator=new kg(e)}async create(e,t,n){return this.sugar(await this.creator.create(e,t,n))}async rename(e,t){return await this.creator.rename(e,t)}async delete(...e){return await this.creator.delete(e)}sugar(e){return new ii(e.name,e.key)}};const Ag=Object.freeze(Object.defineProperty({__proto__:null,Client:wc,Group:ii,ONTOLOGY_TYPE:Ls,analyzeParams:vg,groupZ:js,keyZ:zt,nameZ:Qr,ontologyID:pc},Symbol.toStringTag,{value:"Module"})),Ug="/ontology/add-children",Cg="/ontology/remove-children",Rg="/ontology/move-children",aa=i.z.object({id:ie,children:ie.array()}),Bg=i.z.object({from:ie,to:ie,children:ie.array()}),kn=i.z.object({});let Pg=class{constructor(e){l(this,"client");this.client=e}async addChildren(e,...t){await m(this.client,Ug,{id:new E(e).payload,children:t.map(n=>new E(n).payload)},aa,kn)}async removeChildren(e,...t){await m(this.client,Cg,{id:new E(e).payload,children:t.map(n=>new E(n).payload)},aa,kn)}async moveChildren(e,t,...n){const s={from:new E(e).payload,to:new E(t).payload,children:n.map(a=>new E(a).payload)};await m(this.client,Rg,s,Bg,kn)}};const Dg="/ontology/retrieve",Mg=i.z.object({ids:ie.array().optional(),children:i.z.boolean().optional(),parents:i.z.boolean().optional(),includeSchema:i.z.boolean().optional(),excludeFieldData:i.z.boolean().optional(),term:i.z.string().optional(),limit:i.z.number().optional(),offset:i.z.number().optional(),types:vr.array().optional()}),jg=i.z.object({resources:gc.array()}),Mr=r=>b(r).map(e=>new E(e).payload);let mc=class{constructor(e,t){l(this,"type","ontology");l(this,"groups");l(this,"client");l(this,"writer");l(this,"framer");this.client=e,this.writer=new Pg(e),this.groups=new wc(e),this.framer=t}async search(e,t){return await this.execRetrieve({term:e,...t})}async retrieve(e,t){const n=await this.execRetrieve({ids:Mr(e),...t});if(Array.isArray(e))return n;if(n.length===0)throw new ke(`No resource found with ID ${gg.naturalLanguageJoin(b(e).map(s=>new E(s).toString()))}`);return n[0]}async page(e,t,n){return await this.execRetrieve({offset:e,limit:t,...n})}async retrieveChildren(e,t){return await this.execRetrieve({ids:Mr(e),children:!0,...t})}async retrieveParents(e,t){return await this.execRetrieve({ids:Mr(e),parents:!0,...t})}async addChildren(e,...t){return await this.writer.addChildren(e,...t)}async removeChildren(e,...t){return await this.writer.removeChildren(e,...t)}async moveChildren(e,t,...n){return await this.writer.moveChildren(e,t,...n)}async openChangeTracker(){return await Tr.open(this.framer,this)}async openDependentTracker(e){return await dn.open(e,this.framer,this)}newSearcherWithOptions(e){return{type:this.type,search:t=>this.search(t,e),retrieve:t=>this.retrieve(t,e),page:(t,n)=>this.page(t,n,e)}}async execRetrieve(e){const{resources:t}=await m(this.client,Dg,e,Mg,jg);return t}};const oa="sy_ontology_resource_set",ca="sy_ontology_resource_delete",la="sy_ontology_relationship_set",ha="sy_ontology_relationship_delete";class Tr{constructor(e,t){l(this,"relationships");l(this,"resources");l(this,"resourceObs");l(this,"relationshipObs");l(this,"streamer");l(this,"client");l(this,"closePromise");this.relationshipObs=new He.Observer,this.relationships=this.relationshipObs,this.resourceObs=new He.Observer,this.resources=this.resourceObs,this.client=t,this.streamer=e,this.closePromise=this.start()}async close(){this.streamer.close(),await this.closePromise}async start(){for await(const e of this.streamer)await this.update(e)}async update(e){const t=await this.parseResourceSets(e),n=this.parseResourceDeletes(e);t.concat(n).length>0&&this.resourceObs.notify(t.concat(n));const a=this.parseRelationshipSets(e),o=this.parseRelationshipDeletes(e);a.concat(o).length>0&&this.relationshipObs.notify(a.concat(o))}parseRelationshipSets(e){const t=e.get(la);return t.length===0?[]:Array.from(t.as("string")).map(n=>({variant:"set",key:vs(n),value:void 0}))}parseRelationshipDeletes(e){const t=e.get(ha);return t.length===0?[]:Array.from(t.as("string")).map(n=>({variant:"delete",key:vs(n)}))}async parseResourceSets(e){const t=e.get(oa);if(t.length===0)return[];const n=Array.from(t.as("string")).map(s=>new E(s));try{return(await this.client.retrieve(n)).map(a=>({variant:"set",key:a.id,value:a}))}catch(s){if(s instanceof ke)return[];throw s}}parseResourceDeletes(e){const t=e.get(ca);return t.length===0?[]:Array.from(t.as("string")).map(n=>({variant:"delete",key:new E(n)}))}static async open(e,t){const n=await e.openStreamer([oa,ca,la,ha]);return new Tr(n,t)}}const ua=r=>r==="from"?"to":"from";class dn extends He.Observer{constructor({target:t,dependents:n,relationshipType:s="parent",relationshipDirection:a="from",resourceType:o},c,h){super();l(this,"internal");l(this,"target");l(this,"relDir");l(this,"resourceType");l(this,"dependents");l(this,"client");l(this,"relType");l(this,"handleResourceChange",t=>{this.dependents=this.dependents.map(n=>{const s=t.find(a=>a.key.toString()==n.id.toString());return s==null||s.variant==="delete"?n:s.value}),this.notify(this.dependents)});l(this,"handleRelationshipChange",t=>{const n=t.filter(a=>a.variant==="delete"&&a.key[this.relDir].toString()===this.target.toString()&&(this.resourceType==null||a.key[ua(this.relDir)].type===this.resourceType));this.dependents=this.dependents.filter(a=>!n.some(o=>o.key.to.toString()===a.id.toString()&&o.key.type===this.relType));const s=t.filter(a=>a.variant==="set"&&a.key.type===this.relType&&a.key[this.relDir].toString()===this.target.toString()&&(this.resourceType==null||a.key[ua(this.relDir)].type===this.resourceType));if(s.length===0)return this.notify(this.dependents);this.client.retrieve(s.map(a=>a.key.to)).then(a=>{this.dependents=this.dependents.concat(a),this.notify(this.dependents)}).catch(console.error)});this.resourceType=o,this.internal=c,this.target=t,this.dependents=n,this.resourceType!=null&&(this.dependents=this.dependents.filter(d=>d.id.type===this.resourceType)),this.client=h,this.relType=s,this.relDir=a,this.internal.resources.onChange(this.handleResourceChange),this.internal.relationships.onChange(this.handleRelationshipChange)}static async open(t,n,s){const a=await Tr.open(n,s);return new dn(t,a,s)}async close(){await this.internal.close()}}const Lg=Object.freeze(Object.defineProperty({__proto__:null,BUILTIN_TYPE:si,CLUSTER_TYPE:hc,ChangeTracker:Tr,Client:mc,DependentTracker:dn,FROM_RELATIONSHIP_DIRECTION:Eg,ID:E,NODE_TYPE:uc,ROOT_ID:Og,TO_RELATIONSHIP_DIRECTION:Sg,crudeIDZ:ht,idZ:ie,parseIDs:Mr,parseRelationship:vs,relationshipSchemaZ:zg,resourceTypeZ:vr,resourceZ:gc,schemaFieldZ:fc,schemaZ:yc,stringIDZ:dc},Symbol.toStringTag,{value:"Module"})),Or=i.z.string().uuid(),fn=i.z.object({key:Or,subjects:X(ie),objects:X(ie),actions:X(_r)}),bc=i.z.object({key:Or.optional(),subjects:ht.array().or(ht),objects:ht.array().or(ht),actions:_r.array().or(_r)}),_g=i.z.object({keys:Or.array().optional(),subjects:ie.array().optional()}),Zg=i.z.object({policies:X(fn)}),qg="/access/policy/retrieve";let Fg=class{constructor(e){l(this,"client");this.client=e}async retrieve(e){return(await m(this.client,qg,e,_g,Zg)).policies}};const Yg=i.z.object({policies:fn.partial({key:!0}).array()}),Wg=i.z.object({policies:fn.array()}),Vg=i.z.object({keys:Or.array()}),Gg=i.z.object({}),Hg="/access/policy/create",Kg="/access/policy/delete";let Jg=class{constructor(e){l(this,"client");this.client=e}async create(e){const n=bc.array().parse(b(e)).map(a=>({objects:b(a.objects),actions:b(a.actions),subjects:b(a.subjects)}));return(await m(this.client,Hg,{policies:n},Yg,Wg)).policies}async delete(e){await m(this.client,Kg,{keys:b(e)},Vg,Gg)}},vc=class{constructor(e){l(this,"retriever");l(this,"writer");this.retriever=new Fg(e),this.writer=new Jg(e)}async create(e){const t=Array.isArray(e),n=await this.writer.create(e);return t?n:n[0]}async retrieve(e){const t=Array.isArray(e),n=await this.retriever.retrieve({keys:b(e)});return t?n:n[0]}async retrieveFor(e){const t=b(e).map(n=>new E(n).payload);return await this.retriever.retrieve({subjects:t})}async delete(e){await this.writer.delete(e)}};const Xg=r=>new E({type:Es,key:r}),Qg=new E({type:zs,key:""}),ep=Object.freeze(Object.defineProperty({__proto__:null,ALLOW_ALL_ONTOLOGY_ID:Qg,ALLOW_ALL_ONTOLOGY_TYPE:zs,Client:vc,ONTOLOGY_TYPE:Es,keyZ:Or,newZ:bc,ontologyID:Xg,policyZ:fn},Symbol.toStringTag,{value:"Module"}));let Tc=class{constructor(e){l(this,"policy");this.policy=new vc(e)}};const tp=Object.freeze(Object.defineProperty({__proto__:null,ALL_ACTION:ro,CREATE_ACTION:no,Client:Tc,DELETE_ACTION:so,RETRIEVE_ACTION:io,UPDATE_ACTION:ao,actionZ:_r},Symbol.toStringTag,{value:"Module"})),rp=new Error("request for lock canceled");var np=function(r,e,t,n){function s(a){return a instanceof t?a:new t(function(o){o(a)})}return new(t||(t=Promise))(function(a,o){function c(f){try{d(n.next(f))}catch(u){o(u)}}function h(f){try{d(n.throw(f))}catch(u){o(u)}}function d(f){f.done?a(f.value):s(f.value).then(c,h)}d((n=n.apply(r,e||[])).next())})};class sp{constructor(e,t=rp){this._value=e,this._cancelError=t,this._queue=[],this._weightedWaiters=[]}acquire(e=1,t=0){if(e<=0)throw new Error(`invalid weight ${e}: must be positive`);return new Promise((n,s)=>{const a={resolve:n,reject:s,weight:e,priority:t},o=Oc(this._queue,c=>t<=c.priority);o===-1&&e<=this._value?this._dispatchItem(a):this._queue.splice(o+1,0,a)})}runExclusive(e){return np(this,arguments,void 0,function*(t,n=1,s=0){const[a,o]=yield this.acquire(n,s);try{return yield t(a)}finally{o()}})}waitForUnlock(e=1,t=0){if(e<=0)throw new Error(`invalid weight ${e}: must be positive`);return this._couldLockImmediately(e,t)?Promise.resolve():new Promise(n=>{this._weightedWaiters[e-1]||(this._weightedWaiters[e-1]=[]),ip(this._weightedWaiters[e-1],{resolve:n,priority:t})})}isLocked(){return this._value<=0}getValue(){return this._value}setValue(e){this._value=e,this._dispatchQueue()}release(e=1){if(e<=0)throw new Error(`invalid weight ${e}: must be positive`);this._value+=e,this._dispatchQueue()}cancel(){this._queue.forEach(e=>e.reject(this._cancelError)),this._queue=[]}_dispatchQueue(){for(this._drainUnlockWaiters();this._queue.length>0&&this._queue[0].weight<=this._value;)this._dispatchItem(this._queue.shift()),this._drainUnlockWaiters()}_dispatchItem(e){const t=this._value;this._value-=e.weight,e.resolve([t,this._newReleaser(e.weight)])}_newReleaser(e){let t=!1;return()=>{t||(t=!0,this.release(e))}}_drainUnlockWaiters(){if(this._queue.length===0)for(let e=this._value;e>0;e--){const t=this._weightedWaiters[e-1];t&&(t.forEach(n=>n.resolve()),this._weightedWaiters[e-1]=[])}else{const e=this._queue[0].priority;for(let t=this._value;t>0;t--){const n=this._weightedWaiters[t-1];if(!n)continue;const s=n.findIndex(a=>a.priority<=e);(s===-1?n:n.splice(0,s)).forEach(a=>a.resolve())}}}_couldLockImmediately(e,t){return(this._queue.length===0||this._queue[0].priority<t)&&e<=this._value}}function ip(r,e){const t=Oc(r,n=>e.priority<=n.priority);r.splice(t+1,0,e)}function Oc(r,e){for(let t=r.length-1;t>=0;t--)if(e(r[t]))return t;return-1}var ap=function(r,e,t,n){function s(a){return a instanceof t?a:new t(function(o){o(a)})}return new(t||(t=Promise))(function(a,o){function c(f){try{d(n.next(f))}catch(u){o(u)}}function h(f){try{d(n.throw(f))}catch(u){o(u)}}function d(f){f.done?a(f.value):s(f.value).then(c,h)}d((n=n.apply(r,e||[])).next())})};class op{constructor(e){this._semaphore=new sp(1,e)}acquire(){return ap(this,arguments,void 0,function*(e=0){const[,t]=yield this._semaphore.acquire(1,e);return t})}runExclusive(e,t=0){return this._semaphore.runExclusive(()=>e(),1,t)}isLocked(){return this._semaphore.isLocked()}waitForUnlock(e=0){return this._semaphore.waitForUnlock(1,e)}release(){this._semaphore.isLocked()&&this._semaphore.release()}cancel(){return this._semaphore.cancel()}}const ai=(r,e,{convertNumericStrings:t=!0}={})=>{const n=!Array.isArray(r);let s=b(r);const a=s[0],o=typeof a;let c;return o==="string"&&t&&!isNaN(parseInt(a))&&"number"in e?(c=e.number,s=s.map(h=>parseInt(h))):c=e[o],{single:n,variant:c,normalized:s,actual:r}},yn=(r,e,t,n)=>{if(n){if(t.length===0)throw new Je(`${r} not found matching ${JSON.stringify(e)}`);if(t.length>1)throw new Xe(`Expected one ${r} matching ${JSON.stringify(e)}, but found ${t.length}`)}},cp=i.z.object({leaseholder:i.z.number().optional(),keys:Q.array().optional(),names:i.z.string().array().optional(),search:i.z.string().optional(),rangeKey:i.z.string().optional(),limit:i.z.number().optional(),offset:i.z.number().optional(),dataTypes:x.z.array().optional(),notDataTypes:x.z.array().optional(),virtual:i.z.boolean().optional(),isIndex:i.z.boolean().optional(),internal:i.z.boolean().optional()}),lp=i.z.object({channels:X(fr)}),Oe=r=>(Array.isArray(r)&&r.length>0&&typeof r[0]=="object"?r=r.map(e=>e.key):typeof r=="object"&&"key"in r&&(r=[r.key]),ai(r,{number:"keys",string:"names"})),Yr=class Yr{constructor(e){l(this,"client");this.client=e}async search(e,t){return await this.execute({search:e,...t})}async retrieve(e,t){const n=Oe(e),{variant:s}=n;let{normalized:a}=n;return s==="keys"&&a.indexOf(0)!==-1&&(a=a.filter(o=>o!==0)),a.length===0?[]:await this.execute({[s]:a,...t})}async page(e,t,n){return await this.execute({offset:e,limit:t,...n})}async execute(e){const[t,n]=await this.client.send(Yr.ENDPOINT,e,cp,lp);if(n!=null)throw n;return t.channels}};l(Yr,"ENDPOINT","/channel/retrieve");let ar=Yr;class oi{constructor(e){l(this,"cache");l(this,"namesToKeys");l(this,"wrapped");this.cache=new Map,this.namesToKeys=new Map,this.wrapped=e}async search(e,t){return await this.wrapped.search(e,t)}async page(e,t,n){return await this.wrapped.page(e,t,n)}async retrieve(e,t){const{normalized:n}=Oe(e),s=[],a=[];if(n.forEach(c=>{const h=this.get(c);h!=null?s.push(...h):a.push(c)}),a.length===0)return s;const o=await this.wrapped.retrieve(a,t);return this.set(o),s.concat(o)}delete(e){const{variant:t,normalized:n}=Oe(e);t==="names"?n.forEach(s=>{const a=this.namesToKeys.get(s);a!=null&&(a.forEach(o=>this.cache.delete(o)),this.namesToKeys.delete(s))}):n.forEach(s=>{const a=this.cache.get(s);a!=null&&(this.cache.delete(s),this.namesToKeys.delete(a.name))})}rename(e,t){e.forEach((n,s)=>{const a=t[s],o=this.cache.get(n);if(o==null)return;this.cache.delete(n);const c=this.namesToKeys.get(o.name);c!=null&&(c.delete(n),c.size===0&&this.namesToKeys.delete(o.name)),o.name=a,this.cache.set(n,o);const h=this.namesToKeys.get(a);h==null?this.namesToKeys.set(a,new Set([n])):h.add(n)})}set(e){e.forEach(t=>{this.cache.set(t.key,t);const n=this.namesToKeys.get(t.name);n==null?this.namesToKeys.set(t.name,new Set([t.key])):n.add(t.key)})}get(e){if(typeof e=="number"){const s=this.cache.get(e);return s==null?void 0:[s]}const t=this.namesToKeys.get(e);if(t==null)return;const n=[];if(t.forEach(s=>{const a=this.cache.get(s);a!=null&&n.push(a)}),n.length!==0)return n}}class Sc{constructor(e,t){l(this,"mu",new op);l(this,"requests",new Map);l(this,"wrapped");l(this,"debouncedRun");this.wrapped=e,this.debouncedRun=Qf(()=>{this.run()},t)}async search(e,t){return await this.wrapped.search(e,t)}async page(e,t,n){return await this.wrapped.page(e,t,n)}async retrieve(e){const{normalized:t,variant:n}=Oe(e);return n==="names"?await this.wrapped.retrieve(t):await new Promise((a,o)=>{this.mu.runExclusive(()=>{this.requests.set(t,{resolve:a,reject:o}),this.debouncedRun()})})}async run(){await this.mu.runExclusive(async()=>{const e=new Set;this.requests.forEach((t,n)=>n.forEach(s=>e.add(s)));try{const t=await this.wrapped.retrieve(Array.from(e));this.requests.forEach((n,s)=>n.resolve(t.filter(a=>s.includes(a.key))))}catch(t){this.requests.forEach(n=>n.reject(t))}finally{this.requests.clear()}})}}const Ec=async(r,e)=>{const{normalized:t}=Oe(e),n=await r.retrieve(t),s=[];if(t.forEach(a=>{n.find(o=>o.name===a||o.key===a)==null&&s.push(a)}),s.length>0)throw new ke(`Could not find channels: ${JSON.stringify(s)}`);return n};class ci{constructor({dataType:e,name:t,leaseholder:n=0,key:s=0,isIndex:a=!1,index:o=0,internal:c=!1,virtual:h=!1,frameClient:d,alias:f,expression:u="",requires:N=[]}){l(this,"_frameClient");l(this,"key");l(this,"name");l(this,"dataType");l(this,"leaseholder");l(this,"index");l(this,"isIndex");l(this,"internal");l(this,"alias");l(this,"virtual");l(this,"expression");l(this,"requires");this.key=s,this.name=t,this.dataType=new x(e),this.leaseholder=n,this.index=o,this.isIndex=a,this.internal=c,this.alias=f,this.virtual=h,this.expression=u,this.requires=N??[],this._frameClient=d??null}get framer(){if(this._frameClient==null)throw new F("cannot read from a channel that has not been created");return this._frameClient}get payload(){return fr.parse({key:this.key,name:this.name,dataType:this.dataType.valueOf(),leaseholder:this.leaseholder,index:this.index,isIndex:this.isIndex,internal:this.internal,virtual:this.virtual,expression:this.expression,requires:this.requires})}get isCalculated(){return or(this.payload)}get ontologyID(){return Ic(this.key)}async read(e){return await this.framer.read(e,this.key)}async write(e,t){return await this.framer.write(e,this.key,t)}}const hp="/channel/retrieve-group",up=i.z.object({}),dp=i.z.object({group:js});let zc=class{constructor(e,t,n,s){l(this,"type",en);l(this,"frameClient");l(this,"client");l(this,"retriever");l(this,"writer");this.frameClient=e,this.retriever=t,this.client=n,this.writer=s}async create(e,t={}){const{retrieveIfNameExists:n=!1}=t,s=!Array.isArray(e);let a=b(e),o=[];if(n){const c=await this.retriever.retrieve(a.map(d=>d.name)),h=new Set(c.map(d=>d.name));a=a.filter(d=>!h.has(d.name)),o=this.sugar(c)}return o=o.concat(this.sugar(await this.writer.create(a))),s?o[0]:o}async retrieve(e,t){const n=!Array.isArray(e),s=this.sugar(await this.retriever.retrieve(e,t));return yn("channel",e,s,n),n?s[0]:s}async search(e,t){return this.sugar(await this.retriever.search(e,t))}async delete(e){const{normalized:t,variant:n}=Oe(e);return n==="keys"?await this.writer.delete({keys:t}):await this.writer.delete({names:t})}async rename(e,t){return await this.writer.rename(b(e),b(t))}newSearcherWithOptions(e){return{type:this.type,search:async t=>await this.search(t,e),retrieve:async t=>await this.retrieve(t,e),page:async(t,n)=>await this.page(t,n,e)}}async page(e,t,n){return this.sugar(await this.retriever.page(e,t,n))}createDebouncedBatchRetriever(e=10){return new oi(new Sc(new ar(this.client),e))}sugar(e){const{frameClient:t}=this;return e.map(n=>new ci({...n,frameClient:t}))}async retrieveGroup(){const e=await m(this.client,hp,{},up,dp);return new ii(e.group.name,e.group.key)}};const or=({virtual:r,expression:e})=>r&&e!=="",Nc=async(r,e)=>{if(!or(e))return e.index;for(const t of e.requires){const n=await r(t);if(n==null)return null;if(!n.virtual)return n.index}for(const t of e.requires){const n=await r(t);if(n==null)return null;if(or(n)){const s=await Nc(r,n);if(s!=null)return s}}return null},Ic=r=>new E({type:en,key:r.toString()}),fp=i.z.object({channels:Go.array()}),yp=i.z.object({channels:fr.array()}),gp=i.z.object({keys:Q.array().optional(),names:dr.array().optional()}),pp=i.z.object({}),wp=i.z.object({keys:Q.array(),names:dr.array()}),mp=i.z.object({}),bp="/channel/create",vp="/channel/delete",Tp="/channel/rename";let $c=class{constructor(e,t){l(this,"client");l(this,"cache");this.client=e,this.cache=t}async create(e){const{channels:t}=await m(this.client,bp,{channels:e},fp,yp);return this.cache.set(t),t}async delete(e){await m(this.client,vp,e,gp,pp),e.keys!=null&&this.cache.delete(e.keys),e.names!=null&&this.cache.delete(e.names)}async rename(e,t){await m(this.client,Tp,{keys:e,names:t},wp,mp),this.cache.rename(e,t)}};const Op=Object.freeze(Object.defineProperty({__proto__:null,CacheRetriever:oi,Channel:ci,Client:zc,ClusterRetriever:ar,DebouncedBatchRetriever:Sc,ONTOLOGY_TYPE:en,Writer:$c,analyzeParams:Oe,channelZ:fr,isCalculated:or,keyZ:Q,nameZ:dr,newZ:Go,ontologyID:Ic,resolveCalculatedIndex:Nc,retrieveRequired:Ec},Symbol.toStringTag,{value:"Module"})),Sp=i.z.object({keys:tt.array().optional(),usernames:i.z.string().array().optional()}),Ep=i.z.object({users:X(br)}),zp="/user/retrieve";let Np=class{constructor(e){l(this,"client");this.client=e}async retrieve(e){return(await m(this.client,zp,e,Sp,Ep)).users}};const Ip=i.z.object({users:nc.array()}),$p=i.z.object({users:br.array()}),xp=i.z.object({key:tt,username:i.z.string().min(1)}),kp=i.z.object({}),Ap=i.z.object({key:tt,firstName:i.z.string().optional(),lastName:i.z.string().optional()}),Up=i.z.object({}),Cp=i.z.object({keys:tt.array()}),Rp=i.z.object({}),Bp="/user/create",Pp="/user/change-username",Dp="/user/rename",Mp="/user/delete";let jp=class{constructor(e){l(this,"client");this.client=e}async create(e){return(await m(this.client,Bp,{users:b(e)},Ip,$p)).users}async changeUsername(e,t){await m(this.client,Pp,{key:e,username:t},xp,kp)}async rename(e,t,n){await m(this.client,Dp,{key:e,firstName:t,lastName:n},Ap,Up)}async delete(e){await m(this.client,Mp,{keys:b(e)},Cp,Rp)}},xc=class{constructor(e){l(this,"reader");l(this,"writer");this.writer=new jp(e),this.reader=new Np(e)}async create(e){const t=Array.isArray(e),n=await this.writer.create(e);return t?n:n[0]}async changeUsername(e,t){await this.writer.changeUsername(e,t)}async retrieve(e){const t=Array.isArray(e),n=await this.reader.retrieve({keys:b(e)});if(t)return n;if(n.length===0)throw new Je(`No user with key ${e} found`);if(n.length>1)throw new Xe(`Multiple users found with key ${e}`);return n[0]}async retrieveByName(e){const t=Array.isArray(e),n=await this.reader.retrieve({usernames:b(e)});if(t)return n;if(n.length===0)throw new Je(`No user with username ${e} found`);if(n.length>1)throw new Xe(`Multiple users found with username ${e}`);return n[0]}async rename(e,t,n){await this.writer.rename(e,t,n)}async delete(e){await this.writer.delete(e)}};const Lp=r=>new E({type:Ks,key:r}),_p=Object.freeze(Object.defineProperty({__proto__:null,Client:xc,ONTOLOGY_TYPE:Ks,keyZ:tt,newZ:nc,ontologyID:Lp,userZ:br},Symbol.toStringTag,{value:"Module"})),Zp=i.z.object({username:i.z.string(),password:i.z.string()}),qp=i.z.object({token:i.z.string(),user:br}),da="/auth/login",Fp=3,Yp="/auth/change-password",Wp=i.z.object({username:i.z.string(),password:i.z.string(),newPassword:i.z.string().min(1)}),Vp=i.z.object({}),Gp=[ps,ws];let Hp=class{constructor(e,t){l(this,"token");l(this,"client");l(this,"credentials");l(this,"authenticating");l(this,"authenticated");l(this,"user");l(this,"retryCount");this.client=e,this.authenticated=!1,this.credentials=t,this.retryCount=0}async changePassword(e){if(!this.authenticated)throw new Error("Not authenticated");await m(this.client,Yp,{username:this.credentials.username,password:this.credentials.password,newPassword:e},Wp,Vp),this.credentials.password=e}middleware(){const e=async(t,n)=>{if(!this.authenticated&&!t.target.endsWith(da)){this.authenticating??(this.authenticating=new Promise((c,h)=>{this.client.send(da,this.credentials,Zp,qp).then(([d,f])=>{if(f!=null)return c(f);this.token=d==null?void 0:d.token,this.user=d==null?void 0:d.user,this.authenticated=!0,c(null)}).catch(h)}));const o=await this.authenticating;if(o!=null)return[t,o]}t.params.Authorization=`Bearer ${this.token}`;const[s,a]=await n(t);return Gp.some(o=>o.matches(a))&&this.retryCount<Fp?(this.authenticated=!1,this.authenticating=void 0,this.retryCount+=1,e(t,n)):(this.retryCount=0,[s,a])};return e}};const kc=i.z.enum(["disconnected","connecting","connected","failed"]),Ac=i.z.object({status:kc,error:i.z.instanceof(Error).optional(),message:i.z.string().optional(),clusterKey:i.z.string(),clientVersion:i.z.string(),clientServerCompatible:i.z.boolean(),nodeVersion:i.z.string().optional()}),Kp=i.z.object({clusterKey:i.z.string(),nodeVersion:i.z.string().optional()}),fa={clusterKey:"",status:"disconnected",error:void 0,message:"Disconnected",clientServerCompatible:!1,clientVersion:"0.42.1"},ya=(r,e,t)=>{const n=t?"cluster":"client";return`Synnax cluster node version ${r!=null?`${r} `:""}is too ${t?"old":"new"} for client version ${e}.
39
39
  This may cause compatibility issues. We recommend updating the ${n}. For more information, see
40
40
  https://docs.synnaxlabs.com/reference/typescript-client/troubleshooting#old-${n}-version`},ft=class ft{constructor(e,t=O.seconds(30),n,s){l(this,"_state");l(this,"pollFrequency",O.seconds(30));l(this,"client");l(this,"name");l(this,"interval");l(this,"clientVersion");l(this,"onChangeHandlers",[]);l(this,"versionWarned",!1);this._state={...fa},this.client=e,this.pollFrequency=t,this.clientVersion=n,this.name=s,this.check(),this.startChecking()}stopChecking(){this.interval!=null&&clearInterval(this.interval)}async check(){var t;const e=this._state.status;try{const[n,s]=await this.client.send(ft.ENDPOINT,{},i.z.object({}),Kp);if(s!=null)throw s;const a=n.nodeVersion,o=this.clientVersion,c=this.versionWarned;a==null?(this._state.clientServerCompatible=!1,c||(console.warn(ya(null,o,!0)),this.versionWarned=!0)):ta.versionsEqual(o,a,{checkMajor:!0,checkMinor:!0,checkPatch:!1})?this._state.clientServerCompatible=!0:(this._state.clientServerCompatible=!1,c||(console.warn(ya(a,o,ta.semVerNewer(o,a))),this.versionWarned=!0)),this._state.status="connected",this._state.message=`Connected to ${this.name??"cluster"}`,this._state.clusterKey=n.clusterKey,this._state.nodeVersion=n.nodeVersion,this._state.clientVersion=this.clientVersion}catch(n){this._state.status="failed",this._state.error=n,this._state.message=(t=this.state.error)==null?void 0:t.message}return this.onChangeHandlers.length>0&&e!==this._state.status&&this.onChangeHandlers.forEach(n=>n(this.state)),this.state}get state(){return{...this._state}}onChange(e){this.onChangeHandlers.push(e)}startChecking(){this.interval=setInterval(()=>{this.check()},this.pollFrequency.milliseconds)}};l(ft,"ENDPOINT","/connectivity/check"),l(ft,"DEFAULT",fa),l(ft,"connectionStateZ",Ac);let cr=ft;const Jp=Object.freeze(Object.defineProperty({__proto__:null,Checker:cr,stateZ:Ac,statusZ:kc},Symbol.toStringTag,{value:"Module"})),Xp=i.z.object({keys:Q.array().optional(),bounds:q.z,names:dr.array().optional()}),Qp=i.z.object({}),ew="/frame/delete";class tw{constructor(e){l(this,"client");this.client=e}async delete(e){await m(this.client,ew,e,Xp,Qp)}}var Ot=(r=>(r[r.Open=0]="Open",r[r.Write=1]="Write",r[r.Commit=2]="Commit",r[r.SetAuthority=3]="SetAuthority",r))(Ot||{}),St=(r=>(r[r.PersistStream=1]="PersistStream",r[r.Persist=2]="Persist",r[r.Stream=3]="Stream",r))(St||{});const rw=r=>{switch(r){case"persist":return 2;case"stream":return 3;case"persistStream":return 1;default:if(typeof r=="number"&&r in St)return r;throw new Error(`invalid writer mode: ${r}`)}},nw=new O(-1);class Ts extends Ue.sub("writer_closed"){constructor(){super("WriterClosed")}}const sw=i.z.object({start:z.z.optional(),controlSubject:Ke.subjectZ.optional(),keys:Q.array().optional(),authorities:Ke.authorityZ.array().optional(),mode:i.z.enum(St).optional(),errOnUnauthorized:i.z.boolean().optional(),enableAutoCommit:i.z.boolean().optional(),autoIndexPersistInterval:O.z.optional()}),iw=i.z.object({command:i.z.enum(Ot),config:sw.optional(),frame:tn.optional(),buffer:i.z.instanceof(Uint8Array).optional()}),aw=i.z.object({command:i.z.enum(Ot),end:z.z,err:Tt.payloadZ.optional()});var Ze;let Uc=(Ze=class{constructor(e,t){l(this,"stream");l(this,"adapter");l(this,"closeErr",null);this.stream=e,this.adapter=t}static async _open(e,t,{channels:n,start:s=z.now(),authorities:a=Ke.ABSOLUTE_AUTHORITY,controlSubject:o,mode:c=1,errOnUnauthorized:h=!1,enableAutoCommit:d=!1,autoIndexPersistInterval:f=O.SECOND,useExperimentalCodec:u=!0}){const N=await hi.open(e,n);u&&(t=t.withCodec(new dw(N.codec)));const S=await t.stream(Ze.ENDPOINT,iw,aw),j=new Ze(S,N);return await j.execute({command:0,config:{start:new z(s),keys:N.keys,controlSubject:o,authorities:b(a),mode:rw(c),errOnUnauthorized:h,enableAutoCommit:d,autoIndexPersistInterval:f}}),j}async write(e,t){if(this.closeErr!=null)throw this.closeErr;if(this.stream.received())return await this.close();const n=await this.adapter.adapt(e,t);this.stream.send({command:1,frame:n.toPayload()})}async setAuthority(e,t){if(this.closeErr!=null)throw this.closeErr;let n;if(typeof e=="number"&&t==null)n={keys:[],authorities:[e]};else{let s;typeof e=="string"||typeof e=="number"?s={[e]:t}:s=e,s=await this.adapter.adaptObjectKeys(s),n={keys:Object.keys(s).map(a=>Number(a)),authorities:Object.values(s)}}await this.execute({command:3,config:n})}async commit(){if(this.closeErr!=null)throw this.closeErr;return this.stream.received()?(await this.closeInternal(null),z.ZERO):(await this.execute({command:2})).end}async close(){await this.closeInternal(null)}async closeInternal(e){if(this.closeErr!=null)throw this.closeErr;for(this.closeErr=e,this.stream.closeSend();;){if(this.closeErr!=null){if(Ts.matches(this.closeErr))return null;throw this.closeErr}const[t,n]=await this.stream.receive();n!=null?this.closeErr=ue.matches(n)?new Ts:n:this.closeErr=Tt.decode(t==null?void 0:t.err)}}async execute(e){const t=this.stream.send(e);for(t!=null&&await this.closeInternal(t);;){const[n,s]=await this.stream.receive();s!=null&&await this.closeInternal(s);const a=Tt.decode(n==null?void 0:n.err);if(a!=null&&await this.closeInternal(a),(n==null?void 0:n.command)==e.command)return n}}},l(Ze,"ENDPOINT","/frame/write"),Ze);const ga=r=>r.data.byteLength/r.dataType.density.valueOf(),ow=r=>{const{keys:e,series:t}=r;e.forEach((n,s)=>{t[s].key=n}),t.sort((n,s)=>n.key-s.key),e.sort((n,s)=>n-s),t.forEach(n=>delete n.key)},pa=5,wa=4,ma=3,ba=2,va=1,Ta=0,de=x.TIMESTAMP.density.valueOf(),Be=8,Pe=4,An=4,Un=4,cw=1;class Cc{constructor(e=[],t=[]){l(this,"contentType","application/sy-framer");l(this,"states",new Map);l(this,"currState");l(this,"seqNum",0);(e.length>0||t.length>0)&&this.update(e,t)}update(e,t){this.seqNum++;const n={keys:e,keyDataTypes:new Map,hasVariableDataTypes:!1};e.forEach((s,a)=>{const o=t[a];n.keyDataTypes.set(s,o),o.isVariable&&(n.hasVariableDataTypes=!0)}),n.keys.sort(),this.states.set(this.seqNum,n),this.currState=n}throwIfNotUpdated(e){if(this.seqNum<1)throw new F(`
41
41
  The codec has not been updated with a list of channels and data types.
@@ -53,4 +53,4 @@
53
53
  `);const f=new _e({data:t[h],dataType:d.dataType});o.push(d.key),c.push(f)}return new V(o,c)}if(e instanceof V||e instanceof Map){const o=new V(e);if(this.adapter==null)return o;const c=o.columns.map(h=>{var f;const d=typeof h=="string"?(f=this.adapter)==null?void 0:f.get(h):h;if(d==null)throw new F(`
54
54
  Channel ${h} was not provided in the list of channels when opening the writer
55
55
  `);return d});return new V(c,o.series)}const n=[],s=[],a=Object.entries(e);for(let o=0;o<a.length;o++){const[c,h]=a[o],d=await this.fetchChannel(c),f=new _e({data:h,dataType:d.dataType});n.push(d.key),s.push(f)}return new V(n,s)}}class Bc{constructor(e,t){l(this,"name");l(this,"stream");this.stream=t,this.name=e}async receive(){const[e,t]=await this.stream.receive();if(t!=null)throw t;return e}received(){return this.stream.received()}async closeAndAck(){for(this.stream.closeSend();;){const[e,t]=await this.stream.receive();if(e!=null&&console.warn(`${this.name} received unexpected response on closure.
56
- Please report this error to the Synnax team.`),t!=null){if(ue.matches(t))return;throw t}}}closeSend(){this.stream.closeSend()}send(e){const t=this.stream.send(e);if(t!=null)throw t}}const Os=new O(-1);var ui=(r=>(r[r.Open=0]="Open",r[r.Next=1]="Next",r[r.Prev=2]="Prev",r[r.SeekFirst=3]="SeekFirst",r[r.SeekLast=4]="SeekLast",r[r.SeekLE=5]="SeekLE",r[r.SeekGE=6]="SeekGE",r[r.Valid=7]="Valid",r[r.Error=8]="Error",r))(ui||{}),Pc=(r=>(r[r.None=0]="None",r[r.Ack=1]="Ack",r[r.Data=2]="Data",r))(Pc||{});const yw=i.z.object({command:i.z.enum(ui),span:O.z.optional(),bounds:q.z.optional(),stamp:z.z.optional(),keys:Q.array().optional(),chunkSize:i.z.number().optional()}),gw=i.z.object({variant:i.z.enum(Pc),ack:i.z.boolean(),command:i.z.enum(ui),error:Tt.payloadZ.optional().nullable(),frame:tn.optional()}),er=class er{constructor(e,t){l(this,"stream");l(this,"adapter");l(this,"value");this.stream=new Bc("Iterator",e),this.value=new V,this.adapter=t}static async _open(e,t,n,s,a={}){const o=await gn.open(n,t),c=await s.stream(er.ENDPOINT,yw,gw),h=new er(c,o);return await h.execute({command:0,keys:o.keys,bounds:new q(e),chunkSize:a.chunkSize??1e5}),h}async next(e=Os){return await this.execute({command:1,span:new O(e)})}async prev(e=Os){return await this.execute({command:2,span:new O(e)})}async seekFirst(){return await this.execute({command:3})}async seekLast(){return await this.execute({command:4})}async seekLE(e){return await this.execute({command:5,stamp:new z(e)})}async seekGE(e){return await this.execute({command:6,stamp:new z(e)})}async valid(){return await this.execute({command:7})}async close(){await this.stream.closeAndAck()}[Symbol.asyncIterator](){return new pw(this)}async execute(e){for(this.stream.send(e),this.value=new V;;){const t=await this.stream.receive();if(t.variant===1)return t.ack;this.value.push(this.adapter.adapt(new V(t.frame)))}}};l(er,"ENDPOINT","/frame/iterate");let qr=er;class pw{constructor(e){l(this,"iter");l(this,"open",!1);this.iter=e}async next(){try{let e=!0;return this.open||(await this.iter.seekFirst()||(e=!1),this.open=!0),await this.iter.next()||(e=!1),e||await this.iter.close(),{done:!e,value:this.iter.value}}catch(e){throw await this.iter.close(),e}}}const ww=i.z.object({keys:i.z.number().array(),downSampleFactor:i.z.number()}),mw=i.z.object({frame:tn}),bw="/frame/stream",Dc=(r,e)=>async t=>{let n;Array.isArray(t)||typeof t!="object"?n={channels:t,downSampleFactor:1}:n=t;const s=await gn.open(r,n.channels);n.useExperimentalCodec&&(e=e.withCodec(new fw(s.codec)));const a=await e.stream(bw,ww,mw),o=new vw(a,s);a.send({keys:s.keys,downSampleFactor:n.downSampleFactor??1});const[,c]=await a.receive();if(c!=null)throw c;return o},Mc=async(r,e,t)=>await Dc(r,e)(t);class vw{constructor(e,t){l(this,"stream");l(this,"adapter");l(this,"downsampleFactor");this.stream=new Bc("Streamer",e),this.adapter=t,this.downsampleFactor=1}get keys(){return this.adapter.keys}async next(){try{return{done:!1,value:await this.read()}}catch(e){if(ue.matches(e))return{done:!0,value:void 0};throw e}}async read(){return this.adapter.adapt(new V((await this.stream.receive()).frame))}async update(e){await this.adapter.update(e),this.stream.send({keys:this.adapter.keys,downSampleFactor:this.downsampleFactor})}close(){this.stream.closeSend()}[Symbol.asyncIterator](){return this}}class pn{constructor(e,t){l(this,"wrapped_",null);l(this,"breaker");l(this,"opener");l(this,"config");this.opener=e,Array.isArray(t)||typeof t!="object"?this.config={channels:t,downSampleFactor:1}:this.config=t,this.breaker=new Do.Breaker({maxRetries:5e3,baseInterval:O.seconds(1),scale:1})}static async open(e,t){const n=new pn(e,t);return await n.runStreamer(),n}async runStreamer(){for(;;)try{this.wrapped_!=null&&this.wrapped_.close(),this.wrapped_=await this.opener(this.config),this.breaker.reset();return}catch(e){if(this.wrapped_=null,!await this.breaker.wait())throw e;continue}}get wrapped(){if(this.wrapped_==null)throw new Error("stream closed");return this.wrapped_}async update(e){this.config.channels=e;try{await this.wrapped.update(e)}catch{return await this.runStreamer(),await this.update(e)}}async next(){try{return{done:!1,value:await this.read()}}catch(e){if(ue.matches(e))return{done:!0,value:void 0};throw e}}async read(){try{const e=await this.wrapped.read();return this.breaker.reset(),e}catch(e){if(ue.matches(e))throw e;return await this.runStreamer(),await this.read()}}close(){this.wrapped.close()}get keys(){return this.wrapped.keys}[Symbol.asyncIterator](){return this}}class Ae extends He.Observer{constructor(t,n){super(n);l(this,"streamer");l(this,"closePromise");this.streamer=t,this.closePromise=this.stream()}async close(){this.streamer.close(),await this.closePromise}async stream(){for await(const t of this.streamer)this.notify(t)}}const Tw=r=>new E({type:_s,key:r.toString()}),Oa=r=>Array.isArray(r)||typeof r!="object"||typeof r=="object"&&"key"in r?{channels:r}:r;let jc=class{constructor(e,t,n){l(this,"streamClient");l(this,"retriever");l(this,"deleter");this.streamClient=e,this.retriever=n,this.deleter=new tw(t)}async openIterator(e,t,n){return await qr._open(e,t,this.retriever,this.streamClient,n)}async openWriter(e){return await Uc._open(this.retriever,this.streamClient,Oa(e))}async openStreamer(e){return await Mc(this.retriever,this.streamClient,Oa(e))}async write(e,t,n){if(n==null){const a=t,o=await this.openWriter({start:e,channels:Object.keys(a),mode:St.Persist,errOnUnauthorized:!0,enableAutoCommit:!0,autoIndexPersistInterval:O.MAX});await o.write(a),await o.commit(),await o.close();return}const s=await this.openWriter({start:e,channels:t,mode:St.Persist,errOnUnauthorized:!0,enableAutoCommit:!0,autoIndexPersistInterval:O.MAX});await s.write(t,n),await s.close()}async read(e,t){const{single:n}=Oe(t),s=await this.readFrame(e,t);return n?s.get(t):s}async readFrame(e,t){const n=await this.openIterator(e,t),s=new V;try{for await(const a of n)s.push(a)}finally{await n.close()}return s}async delete(e,t){const{normalized:n,variant:s}=Oe(e);return s==="keys"?await this.deleter.delete({keys:n,bounds:t}):await this.deleter.delete({names:n,bounds:t})}};const Ow=Object.freeze(Object.defineProperty({__proto__:null,ALWAYS_INDEX_PERSIST_ON_AUTO_COMMIT:nw,AUTO_SPAN:Os,Client:jc,Frame:V,HardenedStreamer:pn,Iterator:qr,ONTOLOGY_TYPE:_s,ObservableStreamer:Ae,Writer:Uc,WriterClosedError:Ts,WriterCommand:Ot,WriterMode:St,createStreamOpener:Dc,frameZ:tn,ontologyID:Tw,openStreamer:Mc,seriesFromPayload:Ho,seriesToPayload:Ko},Symbol.toStringTag,{value:"Module"})),Sw=Ke.ABSOLUTE_AUTHORITY,Ew=Ke.ZERO_AUTHORITY,zw=Ke.stateZ(i.z.number()),Nw=r=>{var e,t;return r.to==null?`${(e=r.from)==null?void 0:e.resource} - ${(t=r.from)==null?void 0:t.subject.name} -> released`:r.from==null?`${r.to.resource} - released -> ${r.to.subject.name} (${r.to.authority.toString()})`:`${r.to.resource} - ${r.from.subject.name} -> ${r.to.subject.name} (${r.to.authority.toString()})`},Iw=i.z.object({transfers:i.z.array(Ke.transferZ)});class Lc extends Ae{constructor(t){super(t,n=>{const s=this.codec.decode(n.series[0].buffer,Iw);return this.merge(s),[s.transfers,!0]});l(this,"states");l(this,"codec");this.states=new Map,this.codec=new Qe.JSONCodec}subjects(){const t=new Map;return this.states.forEach(n=>t.set(n.subject.key,n.subject)),Array.from(t.values())}merge(t){t.transfers.forEach(n=>{n.from==null&&n.to==null&&console.warn("Invalid transfer: ",n),n.to==null?this.states.delete(n.from.resource):this.states.set(n.to.resource,n.to)})}}const Sa="sy_node_1_control";let _c=class{constructor(e){l(this,"framer");this.framer=e}async openStateTracker(){const e=await pn.open(async()=>await this.framer.openStreamer(Sa),Sa);return new Lc(e)}};const $w=Object.freeze(Object.defineProperty({__proto__:null,ABSOLUTE_AUTHORITY:Sw,Client:_c,StateTracker:Lc,ZERO_AUTHORITY:Ew,stateZ:zw,transferString:Nw},Symbol.toStringTag,{value:"Module"}));let Zc=class{constructor(e,t,n){l(this,"tasks");l(this,"racks");l(this,"devices");this.tasks=e,this.racks=t,this.devices=n}};const xw=Object.freeze(Object.defineProperty({__proto__:null,Client:Zc},Symbol.toStringTag,{value:"Module"})),nt=async(r,e,t,n)=>{const s=await r.openStreamer([e,t]),a=o=>{const c=[];return t!=null&&c.push(...o.get(t).series.flatMap(h=>n("delete",h))),e!=null&&c.push(...o.get(e).series.flatMap(h=>n("set",h))),[c,c.length>0]};return new Ae(s,a)},kw=Object.freeze(Object.defineProperty({__proto__:null,openObservable:nt},Symbol.toStringTag,{value:"Module"})),Aw="sy_device_set",Uw="sy_device_delete",Ea="sy_device_state",Cn="/hardware/device/retrieve",Cw="/hardware/device/create",Rw="/hardware/device/delete",Bw=i.z.object({devices:Xo.array()}),Pw=i.z.object({devices:gr.array()}),Dw=i.z.object({keys:yr.array()}),Mw=i.z.object({}),Rn=i.z.object({keys:yr.array().optional(),names:i.z.string().array().optional(),makes:i.z.string().array().optional(),models:i.z.string().array().optional(),locations:i.z.string().array().optional(),racks:Ye.array().optional(),search:i.z.string().optional(),limit:i.z.number().optional(),offset:i.z.number().optional(),ignoreNotFound:i.z.boolean().optional(),includeState:i.z.boolean().optional()}),Bn=i.z.object({devices:X(gr)});let qc=class{constructor(e,t){l(this,"type",sn);l(this,"client");l(this,"frameClient");this.client=e,this.frameClient=t}async retrieve(e,t){const n=!Array.isArray(e),s=await m(this.client,Cn,{keys:b(e),...t},Rn,Bn);return yn("Device",e,s.devices,n),n?s.devices[0]:s.devices}async search(e,t){return(await m(this.client,Cn,{search:e,...t},Rn,Bn)).devices}async page(e,t,n){return(await m(this.client,Cn,{offset:e,limit:t,...n},Rn,Bn)).devices}async create(e){const t=!Array.isArray(e),n=await m(this.client,Cw,{devices:b(e)},Bw,Pw);return t?n.devices[0]:n.devices}async delete(e){await m(this.client,Rw,{keys:b(e)},Dw,Mw)}async openDeviceTracker(){return await nt(this.frameClient,Aw,Uw,jw)}async openStateObserver(){return new Ae(await this.frameClient.openStreamer(Ea),e=>{const t=e.get(Ea);return t.length===0?[null,!1]:[t.parseJSON(Fs),!0]})}newSearcherWithOptions(e){return{type:this.type,search:async t=>await this.search(t,e),retrieve:async t=>await this.retrieve(t,e),page:async(t,n)=>await this.page(t,n,e)}}};const jw=(r,e)=>r==="delete"?e.toStrings().map(t=>({variant:r,key:t,value:void 0})):e.parseJSON(gr).map(t=>({variant:r,key:t.key,value:t})),Lw=r=>new E({type:sn,key:r}),_w=Object.freeze(Object.defineProperty({__proto__:null,Client:qc,ONTOLOGY_TYPE:sn,deviceZ:gr,keyZ:yr,newZ:Xo,ontologyID:Lw,stateZ:Fs},Symbol.toStringTag,{value:"Module"})),Pn="/hardware/rack/retrieve",Zw="/hardware/rack/create",qw="/hardware/rack/delete",za="sy_rack_state",Dn=i.z.object({keys:Ye.array().optional(),names:i.z.string().array().optional(),search:i.z.string().optional(),embedded:i.z.boolean().optional(),hostIsNode:i.z.boolean().optional(),limit:i.z.number().optional(),offset:i.z.number().optional(),includeState:i.z.boolean().optional()}),Mn=i.z.object({racks:X(rn)}),Fw=i.z.object({racks:Jo.array()}),Yw=i.z.object({racks:rn.array()}),Ww=i.z.object({keys:Ye.array()}),Vw=i.z.object({});let Fc=class{constructor(e,t,n){l(this,"type",nn);l(this,"client");l(this,"tasks");l(this,"frameClient");this.client=e,this.tasks=t,this.frameClient=n}async delete(e){await m(this.client,qw,{keys:b(e)},Ww,Vw)}async create(e){const t=!Array.isArray(e),n=await m(this.client,Zw,{racks:b(e)},Fw,Yw),s=this.sugar(n.racks);return t?s[0]:s}async search(e){const t=await m(this.client,Pn,{search:e},Dn,Mn);return this.sugar(t.racks)}async page(e,t){const n=await m(this.client,Pn,{offset:e,limit:t},Dn,Mn);return this.sugar(n.racks)}async retrieve(e,t){const{variant:n,normalized:s,single:a}=ai(e,{string:"names",number:"keys"}),o=await m(this.client,Pn,{[n]:s,includeState:t==null?void 0:t.includeState},Dn,Mn),c=this.sugar(o.racks);return yn("Rack",e,c,a),a?c[0]:c}async openStateObserver(){return new Ae(await this.frameClient.openStreamer(za),e=>{const t=e.get(za);return t.length===0?[[],!1]:[t.parseJSON(Zs),!0]})}sugar(e){return e.map(({key:t,name:n,state:s})=>new Yc(t,n,this.tasks,s))}};class Yc{constructor(e,t,n,s){l(this,"key");l(this,"name");l(this,"state");l(this,"tasks");this.key=e,this.name=t,this.tasks=n,this.state=s}async listTasks(){return await this.tasks.retrieve(this.key)}async retrieveTaskByName(e){return await this.tasks.retrieveByName(e,this.key)}async retrieveTaskByType(e){return await this.tasks.retrieveByType(e,this.key)}async createTask(e){return e.key=((BigInt(this.key)<<32n)+(BigInt(e.key??0)&0xffffffffn)).toString(),await this.tasks.create(e)}async deleteTask(e){await this.tasks.delete([e])}}const Gw=r=>new E({type:nn,key:r.toString()}),Hw=Object.freeze(Object.defineProperty({__proto__:null,Client:Fc,ONTOLOGY_TYPE:nn,Rack:Yc,keyZ:Ye,newZ:Jo,ontologyID:Gw,rackZ:rn,stateZ:Zs},Symbol.toStringTag,{value:"Module"})),Qt="sy_task_state",ut="sy_task_cmd",Kw="sy_task_set",Jw="sy_task_delete",lt=new Error("Task not created"),Wc=async(r,e)=>{const t=await e.retrieveParents(r);return t.length===0?null:t[0]};class Vc{constructor(e,t,n,s,a=!1,o=!1,c,h=null,d=null,f=null){l(this,"key");l(this,"name");l(this,"internal");l(this,"type");l(this,"config");l(this,"snapshot");l(this,"state");l(this,"frameClient");l(this,"ontologyClient");l(this,"rangeClient");this.key=e,this.name=t,this.type=n,this.config=s,this.internal=a,this.snapshot=o,c!==null&&(this.state=c),this.frameClient=h,this.ontologyClient=d,this.rangeClient=f}get payload(){return{key:this.key,name:this.name,type:this.type,config:this.config,state:this.state,internal:this.internal}}get ontologyID(){return Hc(this.key)}async executeCommand(e,t){if(this.frameClient==null)throw lt;const n=await this.frameClient.openWriter(ut),s=Zf.create();return await n.write(ut,[{task:this.key,type:e,key:s,args:t}]),await n.close(),s}async executeCommandSync(e,t,n){if(this.frameClient==null)throw lt;const s=await this.frameClient.openStreamer(Qt),a=await this.executeCommand(e,t);let o;const c=new Promise(h=>setTimeout(()=>h(!1),new O(n).milliseconds));for(;;){const h=await Promise.any([s.read(),c]);if(h===!1)throw new Error("Command timed out");const d=ir.safeParse(h.at(-1).sy_task_state);if(d.success){if(o=d.data,o.key===a)break}else throw d.error}return s.close(),o}async openStateObserver(){if(this.frameClient==null)throw lt;return new Ae(await this.frameClient.openStreamer(Qt),e=>{const t=e.get(Qt);if(t.length===0)return[null,!1];const n=ir.safeParse(t.at(-1));if(!n.success)return console.error(n.error),[null,!1];const s=n.data;return s.task!==this.key?[null,!1]:[s,!0]})}async openCommandObserver(){if(this.frameClient==null)throw lt;return new Ae(await this.frameClient.openStreamer(ut),e=>{const t=e.get(ut);if(t.length===0)return[null,!1];const n=Ys.safeParse(t.at(-1));if(!n.success)return console.error(n.error),[null,!1];const s=n.data;return s.task!==this.key?[null,!1]:[s,!0]})}async snapshottedTo(){if(this.ontologyClient==null||this.rangeClient==null)throw lt;return this.snapshot?await Wc(this.key,this.ontologyClient):null}}const Xw=i.z.object({rack:Ye.optional(),keys:We.array().optional(),names:i.z.string().array().optional(),types:i.z.string().array().optional(),includeState:i.z.boolean().optional(),offset:i.z.number().optional(),limit:i.z.number().optional()}),Qw=i.z.object({tasks:X(pr)}),em="/hardware/task/retrieve",tm="/hardware/task/create",rm="/hardware/task/delete",nm="/hardware/task/copy",sm=i.z.object({tasks:ec.array()}),im=i.z.object({tasks:pr.array()}),am=i.z.object({keys:We.array()}),om=i.z.object({}),cm=i.z.object({key:We,name:i.z.string(),snapshot:i.z.boolean()}),lm=i.z.object({task:pr});let Gc=class{constructor(e,t,n,s){l(this,"type",an);l(this,"client");l(this,"frameClient");l(this,"ontologyClient");l(this,"rangeClient");this.client=e,this.frameClient=t,this.ontologyClient=n,this.rangeClient=s}async create(e){const t=!Array.isArray(e),n=await m(this.client,tm,{tasks:b(e)},sm,im),s=this.sugar(n.tasks);return t?s[0]:s}async delete(e){await m(this.client,rm,{keys:b(e)},am,om)}async search(e){return await this.execRetrieve({keys:[e]})}async page(e,t){return await this.execRetrieve({offset:e,limit:t})}async list(e={}){return this.sugar(await this.execRetrieve(e))}async retrieve(e,t){const{single:n,normalized:s,variant:a}=ai(e,{number:"rack",string:"keys"},{convertNumericStrings:!1}),o={...t};a==="rack"?o.rack=e:o.keys=s;const c=await this.execRetrieve(o),h=this.sugar(c);return n&&a!=="rack"?h[0]:h}async copy(e,t,n){const s=await m(this.client,nm,{key:e,name:t,snapshot:n},cm,lm);return this.sugar([s.task])[0]}async retrieveByName(e,t){const n=await this.execRetrieve({names:[e],rack:t});return yn("Task",e,n,!0),this.sugar(n)[0]}async retrieveByType(e,t){const n=await this.execRetrieve({types:[e],rack:t});return this.sugar(n)}async retrieveSnapshottedTo(e){if(this.ontologyClient==null)throw lt;return await Wc(e,this.ontologyClient)}async execRetrieve(e){return(await m(this.client,em,e,Xw,Qw)).tasks}sugar(e){const t=!Array.isArray(e),n=b(e).map(({key:s,name:a,type:o,config:c,state:h,internal:d,snapshot:f})=>new Vc(s,a,o,c,d,f,h,this.frameClient,this.ontologyClient,this.rangeClient));return t?n[0]:n}async openTracker(){return await nt(this.frameClient,Kw,Jw,(e,t)=>Array.from(t).map(n=>({variant:e,key:n.toString(),value:n.toString()})))}async openStateObserver(){return new Ae(await this.frameClient.openStreamer(Qt),e=>{const t=e.get(Qt);if(t.length===0)return[null,!1];const n=ir.safeParse(t.at(-1));return n.success?[n.data,!0]:(console.error(n.error),[null,!1])})}async openCommandObserver(){return new Ae(await this.frameClient.openStreamer(ut),e=>{const t=e.get(ut);if(t.length===0)return[null,!1];const n=Ys.safeParse(t.at(-1));return n.success?[n.data,!0]:(console.error(n.error),[null,!1])})}};const Hc=r=>new E({type:an,key:r}),hm=Object.freeze(Object.defineProperty({__proto__:null,Client:Gc,ONTOLOGY_TYPE:an,Task:Vc,commandZ:Ys,getRackKey:Tg,keyZ:We,newZ:ec,ontologyID:Hc,stateZ:ir,statusZ:Qo,taskZ:pr},Symbol.toStringTag,{value:"Module"})),um=i.z.object({keys:et.array().optional(),for:ie.optional(),search:i.z.string().optional(),offset:i.z.number().optional(),limit:i.z.number().optional()}),dm=i.z.object({labels:X(wr)}),Wr=class Wr{constructor(e){l(this,"client");this.client=e}async retrieve(e){return await this.execute({keys:b(e)})}async retrieveFor(e){return await this.execute({for:e})}async search(e){return await this.execute({search:e})}async page(e,t){return await this.execute({offset:e,limit:t})}async execute(e){const[t,n]=await this.client.send(Wr.ENDPOINT,e,um,dm);if(n!=null)throw n;return t.labels}};l(Wr,"ENDPOINT","/label/retrieve");let Fr=Wr;const Kc=wr.extend({key:et.optional()}),fm=i.z.object({labels:Kc.array()}),ym=i.z.object({labels:wr.array()}),gm=i.z.object({keys:et.array()}),Jc=i.z.object({id:ie,labels:et.array(),replace:i.z.boolean().optional()}),pm=Jc.omit({replace:!0}),jn=i.z.object({}),wm="/label/create",mm="/label/delete",bm="/label/set",vm="/label/remove";let Xc=class{constructor(e){l(this,"client");this.client=e}async create(e){return(await m(this.client,wm,{labels:b(e)},fm,ym)).labels}async delete(e){await m(this.client,mm,{keys:b(e)},gm,jn)}async set(e,t,{replace:n}={}){await m(this.client,bm,{id:e,labels:t,replace:n},Jc,jn)}async remove(e,t){await m(this.client,vm,{id:e,labels:t},pm,jn)}};const Tm="sy_label_set",Om="sy_label_delete";let Qc=class{constructor(e,t,n){l(this,"type","label");l(this,"retriever");l(this,"writer");l(this,"frameClient");l(this,"ontology");this.writer=new Xc(e),this.retriever=new Fr(e),this.frameClient=t,this.ontology=n}async search(e){return await this.retriever.search(e)}async retrieve(e){const t=Array.isArray(e),n=await this.retriever.retrieve(e);return t?n:n[0]}async retrieveFor(e){return await this.retriever.retrieveFor(new E(e))}async label(e,t,n={}){await this.writer.set(new E(e),t,n)}async removeLabels(e,t){await this.writer.remove(new E(e),t)}async page(e,t){return await this.retriever.page(e,t)}async create(e){const t=Array.isArray(e),n=await this.writer.create(e);return t?n:n[0]}async delete(e){await this.writer.delete(e)}async openChangeTracker(){return await nt(this.frameClient,Tm,Om,Sm)}async trackLabelsOf(e){const t=new He.Observer,n=(await this.retrieveFor(e)).map(a=>({id:el(a.key),key:a.key,name:a.name,data:a}));return(await this.ontology.openDependentTracker({target:new E(e),dependents:n,relationshipType:"labeled_by"})).onChange(a=>t.notify(a.map(o=>{var c,h;return{key:o.id.key,color:(c=o.data)==null?void 0:c.color,name:(h=o.data)==null?void 0:h.name}}))),t}};const Sm=(r,e)=>r==="delete"?e.toUUIDs().map(t=>({variant:r,key:t})):e.parseJSON(wr).map(t=>({variant:r,key:t.key,value:t})),el=r=>new E({type:Ws,key:r}),Em=Object.freeze(Object.defineProperty({__proto__:null,Client:Qc,ONTOLOGY_TYPE:Ws,Retriever:Fr,Writer:Xc,keyZ:et,labelZ:wr,newZ:Kc,ontologyID:el},Symbol.toStringTag,{value:"Module"})),zm="sy_range_alias_set",Nm="sy_range_alias_delete",Im=i.z.object({range:ae,aliases:i.z.string().array()}),$m=i.z.object({aliases:i.z.record(i.z.string(),Q)}),xm=i.z.object({range:ae,aliases:i.z.record(Q.or(i.z.string()),i.z.string())}),km=i.z.unknown(),Am=i.z.object({range:ae,channels:Q.array()}),Um=i.z.unknown(),Cm=i.z.object({range:ae}),Rm=i.z.object({aliases:i.z.record(i.z.string(),i.z.string())}),be=class be{constructor(e,t,n){l(this,"frameClient");l(this,"cache",new Map);l(this,"client");l(this,"rangeKey");this.rangeKey=e,this.cache=new Map,this.client=n,this.frameClient=t}async resolve(e){const t=[],n=typeof e=="string",s={};if(n){const o=this.cache.get(e);if(o!=null)return o;t.push(e)}else e.forEach(o=>{const c=this.cache.get(o);c!=null?s[o]=c:t.push(o)});if(t.length===0)return s;const a=await m(this.client,be.RESOLVE_ENDPOINT,{range:this.rangeKey,aliases:t},Im,$m);return Object.entries(a.aliases).forEach(([o,c])=>this.cache.set(o,c)),n?a.aliases[t[0]]:{...s,...a.aliases}}async set(e){await m(this.client,be.SET_ENDPOINT,{range:this.rangeKey,aliases:e},xm,km)}async list(){return(await m(this.client,be.LIST_ENDPOINT,{range:this.rangeKey},Cm,Rm)).aliases}async delete(e){await m(this.client,be.DELETE_ENDPOINT,{range:this.rangeKey,channels:e},Am,Um)}async openChangeTracker(){return await nt(this.frameClient,zm,Nm,Dm(this.rangeKey))}};l(be,"SET_ENDPOINT","/range/alias/set"),l(be,"RESOLVE_ENDPOINT","/range/alias/resolve"),l(be,"LIST_ENDPOINT","/range/alias/list"),l(be,"DELETE_ENDPOINT","/range/alias/delete");let Ss=be;const Bm=i.z.object({range:ae,channel:Q,alias:i.z.string()}),Pm="---",Dm=r=>(e,t)=>e==="delete"?t.toStrings().filter(n=>n.split(Pm)[0]===r).map(n=>({variant:e,key:n,value:void 0})):t.parseJSON(Bm).map(n=>({variant:e,key:n.alias,value:n})),di=i.z.object({range:ae,key:i.z.string(),value:i.z.string()}),Mm=i.z.object({range:ae,keys:i.z.string().array()}),jm=i.z.object({pairs:X(di)}),Lm=i.z.object({range:ae,pairs:di.array()}),_m=i.z.object({range:ae,keys:i.z.string().array()}),Le=class Le{constructor(e,t,n){l(this,"rangeKey");l(this,"client");l(this,"frameClient");this.rangeKey=e,this.client=t,this.frameClient=n}async get(e){const t=await m(this.client,Le.GET_ENDPOINT,{range:this.rangeKey,keys:b(e)},Mm,jm);return typeof e=="string"?t.pairs[0].value:Object.fromEntries(t.pairs.map(n=>[n.key,n.value]))}async list(){return this.get([])}async set(e,t=""){let n;Hr(e)?n=Object.entries(e).map(([s,a])=>({range:this.rangeKey,key:s,value:a})):n=[{range:this.rangeKey,key:e,value:t}],await m(this.client,Le.SET_ENDPOINT,{range:this.rangeKey,pairs:n},Lm,i.z.unknown())}async delete(e){await m(this.client,Le.DELETE_ENDPOINT,{range:this.rangeKey,keys:b(e)},_m,i.z.unknown())}async openTracker(){return await nt(this.frameClient,"sy_range_kv_set","sy_range_kv_delete",(e,t)=>e==="delete"?t.toStrings().map(n=>{const[s,a]=n.split("<--->",2);return{variant:e,key:n,value:{range:s,key:a,value:""}}}):t.parseJSON(di).map(n=>({variant:e,key:`${n.range}${n.key}`,value:n})))}};l(Le,"GET_ENDPOINT","/range/kv/get"),l(Le,"SET_ENDPOINT","/range/kv/set"),l(Le,"DELETE_ENDPOINT","/range/kv/delete");let lr=Le;class tl{constructor(e,t=q.ZERO,n,s,a,o,c,h,d,f,u){l(this,"key");l(this,"name");l(this,"kv");l(this,"timeRange");l(this,"color");l(this,"channels");l(this,"aliaser");l(this,"frameClient");l(this,"labelClient");l(this,"ontologyClient");l(this,"rangeClient");this.key=n,this.name=e,this.timeRange=t,this.frameClient=a,this.color=s,this.kv=o,this.aliaser=c,this.channels=h,this.labelClient=d,this.ontologyClient=f,this.rangeClient=u}get ontologyID(){return je(this.key)}get payload(){return{key:this.key,name:this.name,timeRange:this.timeRange,color:this.color}}async setAlias(e,t){const n=await this.channels.retrieve(e);if(n.length===0)throw new ke(`Channel ${e} does not exist`);await this.aliaser.set({[n[0].key]:t})}async deleteAlias(...e){await this.aliaser.delete(e)}async listAliases(){return await this.aliaser.list()}async resolveAlias(e){return await this.aliaser.resolve(e)}async openAliasTracker(){return await this.aliaser.openChangeTracker()}async retrieveParent(){return this.rangeClient.retrieveParent(this.key)}async retrieveChildren(){const e=(await this.ontologyClient.retrieveChildren(this.ontologyID,{excludeFieldData:!0,types:["range"]})).map(t=>t.id.key);return await this.rangeClient.retrieve(e)}async read(e){return await this.frameClient.read(this.timeRange,e)}async labels(){return await this.labelClient.retrieveFor(je(this.key))}async addLabel(...e){await this.labelClient.label(je(this.key),e)}async removeLabel(...e){await this.labelClient.removeLabels(je(this.key),e)}async openChildRangeTracker(){const e=new He.Observer,t=(await this.retrieveChildren()).map(s=>{const a=je(s.key);return{id:a,key:a.toString(),name:s.name,data:s.payload}}),n=await this.ontologyClient.openDependentTracker({target:this.ontologyID,dependents:t,resourceType:"range"});return n.onChange(s=>e.notify(this.rangeClient.resourcesToRanges(s))),e.setCloser(async()=>await n.close()),e}async openParentRangeTracker(){const e=new He.Observer,t=await this.retrieveParent();if(t==null)return null;const n=je(t.key),s={id:n,key:n.toString(),name:t.name,data:t.payload},a=await this.ontologyClient.openDependentTracker({target:this.ontologyID,dependents:[s],relationshipDirection:"to"});return a.onChange(o=>{const c=this.rangeClient.resourcesToRanges(o);if(c.length===0)return;const h=c[0];e.notify(h)}),e.setCloser(async()=>await a.close()),e}}const Zm=(r,e)=>Ff(r.timeRange,e.timeRange),qm=i.z.object({keys:ae.array().optional(),names:i.z.array(i.z.string()).optional(),term:i.z.string().optional(),overlapsWith:q.z.optional(),limit:i.z.number().int().optional(),offset:i.z.number().int().optional(),hasLabels:et.array().optional()}),Fm="/range/retrieve",Ym=i.z.object({ranges:X(mr)});let rl=class{constructor(e,t,n,s,a,o){l(this,"type","range");l(this,"frameClient");l(this,"writer");l(this,"unaryClient");l(this,"channels");l(this,"labelClient");l(this,"ontologyClient");this.frameClient=e,this.writer=t,this.unaryClient=n,this.channels=s,this.labelClient=a,this.ontologyClient=o}async create(e,t){const n=!Array.isArray(e),s=this.sugarMany(await this.writer.create(b(e),t));return n?s[0]:s}async rename(e,t){await this.writer.rename(e,t)}async delete(e){await this.writer.delete(b(e))}async search(e){return this.sugarMany(await this.execRetrieve({term:e}))}async page(e,t){return this.sugarMany(await this.execRetrieve({offset:e,limit:t}))}async retrieve(e){if(typeof e=="object"&&"start"in e)return await this.execRetrieve({overlapsWith:new q(e)});const{single:t,actual:n,variant:s,normalized:a,empty:o}=rc(e);if(o)return[];const c=await this.execRetrieve({[s]:a});if(!t)return c;if(c.length===0)throw new Je(`range matching ${n} not found`);if(c.length>1)throw new Xe(`multiple ranges matching ${n} found`);return c[0]}getKV(e){return new lr(e,this.unaryClient,this.frameClient)}async execRetrieve(e){const{ranges:t}=await m(this.unaryClient,Fm,e,qm,Ym);return this.sugarMany(t)}async retrieveParent(e){const t=await this.ontologyClient.retrieveParents(je(e));if(t.length===0)return null;const n=t[0];return n.id.type!=="range"?null:await this.retrieve(n.id.key)}sugarOne(e){return new tl(e.name,e.timeRange,e.key,e.color,this.frameClient,new lr(e.key,this.unaryClient,this.frameClient),new Ss(e.key,this.frameClient,this.unaryClient),this.channels,this.labelClient,this.ontologyClient,this)}sugarMany(e){return e.map(t=>this.sugarOne(t))}async openTracker(){return await nt(this.frameClient,"sy_range_set","sy_range_delete",(e,t)=>e==="delete"?t.toUUIDs().map(s=>({variant:e,key:s,value:void 0})):this.sugarMany(t.parseJSON(mr)).map(s=>({variant:e,key:s.key,value:s})))}resourcesToRanges(e){return e.map(t=>this.resourceToRange(t))}resourceToRange(e){var t,n,s;return this.sugarOne({key:e.id.key,name:(t=e.data)==null?void 0:t.name,timeRange:new q((n=e.data)==null?void 0:n.timeRange),color:(s=e.data)==null?void 0:s.color})}};const je=r=>new E({type:Gs,key:r}),Wm=r=>new E({type:Hs,key:r}),Vm=i.z.object({ranges:mr.array()}),Gm=i.z.object({parent:ie.optional(),ranges:tc.array()}),Hm=i.z.object({keys:ae.array()}),Km=i.z.object({}),Jm=i.z.object({key:ae,name:Vs}),Xm=i.z.object({}),Qm="/range/create",eb="/range/delete",tb="/range/rename";class nl{constructor(e){l(this,"client");this.client=e}async rename(e,t){await m(this.client,tb,{key:e,name:t},Jm,Xm)}async create(e,t){return(await m(this.client,Qm,{ranges:e,...t},Gm,Vm)).ranges}async delete(e){await m(this.client,eb,{keys:e},Hm,Km)}}const rb=Object.freeze(Object.defineProperty({__proto__:null,ALIAS_ONTOLOGY_TYPE:Hs,Client:rl,KV:lr,ONTOLOGY_TYPE:Gs,Range:tl,Writer:nl,aliasOntologyID:Wm,analyzeParams:rc,keyZ:ae,nameZ:Vs,newZ:tc,ontologyID:je,payloadZ:mr,sort:Zm},Symbol.toStringTag,{value:"Module"})),nb="/api/v1/";class sb{constructor(e,t={},n=!1){l(this,"url");l(this,"unary");l(this,"stream");l(this,"secure");this.secure=n,this.url=e.child(nb);const s=new Qe.JSONCodec;this.unary=ed(new Qu(this.url,s,this.secure),t),this.stream=new ad(this.url,s,this.secure)}use(...e){this.unary.use(...e),this.stream.use(...e)}}const ib="/workspace/lineplot/retrieve",ab="/workspace/lineplot/create",ob="/workspace/lineplot/rename",cb="/workspace/lineplot/set-data",lb="/workspace/lineplot/delete",hb=i.z.object({keys:Nt.array()}),ub=i.z.object({workspace:Ee,linePlots:sc.array()}),db=i.z.object({key:Nt,name:i.z.string()}),fb=i.z.object({key:Nt,data:i.z.string()}),yb=i.z.object({keys:Nt.array()}),gb=i.z.object({linePlots:X(on)}),pb=i.z.object({linePlots:on.array()}),Ln=i.z.object({});let sl=class{constructor(e){l(this,"client");this.client=e}async create(e,t){const n=Array.isArray(t),s=await m(this.client,ab,{workspace:e,linePlots:b(t)},ub,pb);return n?s.linePlots:s.linePlots[0]}async rename(e,t){await m(this.client,ob,{key:e,name:t},db,Ln)}async setData(e,t){await m(this.client,cb,{key:e,data:JSON.stringify(t)},fb,Ln)}async retrieve(e){const t=Array.isArray(e),n=await m(this.client,ib,{keys:b(e)},hb,gb);return t?n.linePlots:n.linePlots[0]}async delete(e){await m(this.client,lb,{keys:b(e)},yb,Ln)}};const wb=r=>new E({type:Js,key:r}),mb=Object.freeze(Object.defineProperty({__proto__:null,Client:sl,ONTOLOGY_TYPE:Js,keyZ:Nt,linePlotZ:on,newZ:sc,ontologyID:wb},Symbol.toStringTag,{value:"Module"})),bb="/workspace/log/retrieve",vb="/workspace/log/create",Tb="/workspace/log/rename",Ob="/workspace/log/set-data",Sb="/workspace/log/delete",Eb=i.z.object({keys:It.array()}),zb=i.z.object({workspace:Ee,logs:ic.array()}),Nb=i.z.object({key:It,name:i.z.string()}),Ib=i.z.object({key:It,data:i.z.string()}),$b=i.z.object({keys:It.array()}),xb=i.z.object({logs:cn.array()}),kb=i.z.object({logs:cn.array()}),_n=i.z.object({});let il=class{constructor(e){l(this,"client");this.client=e}async create(e,t){const n=Array.isArray(t),s=await m(this.client,vb,{workspace:e,logs:b(t)},zb,kb);return n?s.logs:s.logs[0]}async rename(e,t){await m(this.client,Tb,{key:e,name:t},Nb,_n)}async setData(e,t){await m(this.client,Ob,{key:e,data:JSON.stringify(t)},Ib,_n)}async retrieve(e){const t=Array.isArray(e),n=await m(this.client,bb,{keys:b(e)},Eb,xb);return t?n.logs:n.logs[0]}async delete(e){await m(this.client,Sb,{keys:b(e)},$b,_n)}};const Ab=r=>new E({type:Xs,key:r}),Ub=Object.freeze(Object.defineProperty({__proto__:null,Client:il,ONTOLOGY_TYPE:Xs,keyZ:It,logZ:cn,newZ:ic,ontologyID:Ab},Symbol.toStringTag,{value:"Module"})),Cb="/workspace/schematic/retrieve",Rb="/workspace/schematic/create",Bb="/workspace/schematic/rename",Pb="/workspace/schematic/set-data",Db="/workspace/schematic/delete",Mb="/workspace/schematic/copy",jb=i.z.object({keys:rt.array()}),Lb=i.z.object({workspace:Ee,schematics:cc.array()}),_b=i.z.object({key:rt,name:i.z.string()}),Zb=i.z.object({key:rt,data:i.z.string()}),qb=i.z.object({keys:rt.array()}),Fb=i.z.object({key:rt,name:i.z.string(),snapshot:i.z.boolean()}),Yb=i.z.object({schematics:X(Qs)}),Wb=i.z.object({schematics:Qs.array()}),Vb=i.z.object({schematic:un}),Zn=i.z.object({});let al=class{constructor(e){l(this,"client");this.client=e}async create(e,t){const n=Array.isArray(t),s=await m(this.client,Rb,{workspace:e,schematics:b(t)},Lb,Wb);return n?s.schematics:s.schematics[0]}async rename(e,t){await m(this.client,Bb,{key:e,name:t},_b,Zn)}async setData(e,t){await m(this.client,Pb,{key:e,data:JSON.stringify(t)},Zb,Zn)}async retrieve(e){const t=Array.isArray(e),n=await m(this.client,Cb,{keys:b(e)},jb,Yb);return t?n.schematics:n.schematics[0]}async delete(e){await m(this.client,Db,{keys:b(e)},qb,Zn)}async copy(e,t,n){return(await m(this.client,Mb,{key:e,name:t,snapshot:n},Fb,Vb)).schematic}};const Gb=r=>new E({type:ei,key:r}),Hb=Object.freeze(Object.defineProperty({__proto__:null,Client:al,ONTOLOGY_TYPE:ei,keyZ:rt,newZ:cc,ontologyID:Gb,remoteZ:Qs,schematicZ:un},Symbol.toStringTag,{value:"Module"})),Kb="/workspace/table/retrieve",Jb="/workspace/table/create",Xb="/workspace/table/rename",Qb="/workspace/table/set-data",ev="/workspace/table/delete",tv=i.z.object({keys:$t.array()}),rv=i.z.object({workspace:Ee,tables:lc.array()}),nv=i.z.object({key:$t,name:i.z.string()}),sv=i.z.object({key:$t,data:i.z.string()}),iv=i.z.object({keys:$t.array()}),av=i.z.object({tables:ri.array()}),ov=i.z.object({tables:ri.array()}),qn=i.z.object({});let ol=class{constructor(e){l(this,"client");this.client=e}async create(e,t){const n=Array.isArray(t),s=await m(this.client,Jb,{workspace:e,tables:b(t)},rv,ov);return n?s.tables:s.tables[0]}async rename(e,t){await m(this.client,Xb,{key:e,name:t},nv,qn)}async setData(e,t){await m(this.client,Qb,{key:e,data:JSON.stringify(t)},sv,qn)}async retrieve(e){const t=Array.isArray(e),n=await m(this.client,Kb,{keys:b(e)},tv,av);return t?n.tables:n.tables[0]}async delete(e){await m(this.client,ev,{keys:b(e)},iv,qn)}};const cv=r=>new E({type:ni,key:r}),lv=Object.freeze(Object.defineProperty({__proto__:null,Client:ol,ONTOLOGY_TYPE:ni,keyZ:$t,newZ:lc,ontologyID:cv,remoteZ:ri,tableZ:ti},Symbol.toStringTag,{value:"Module"})),Ar="/workspace/retrieve",hv="/workspace/create",uv="/workspace/rename",dv="/workspace/set-layout",fv="/workspace/delete",Ur=i.z.object({keys:Ee.array().optional(),search:i.z.string().optional(),author:tt.optional(),offset:i.z.number().optional(),limit:i.z.number().optional()}),yv=i.z.object({workspaces:ac.array()}),gv=i.z.object({key:Ee,name:i.z.string()}),pv=i.z.object({key:Ee,layout:i.z.string()}),wv=i.z.object({keys:Ee.array()}),Cr=i.z.object({workspaces:X(ln)}),mv=i.z.object({workspaces:oc.array()}),Fn=i.z.object({});class cl{constructor(e){l(this,"type",hn);l(this,"schematic");l(this,"linePlot");l(this,"log");l(this,"table");l(this,"client");this.client=e,this.schematic=new al(e),this.linePlot=new sl(e),this.log=new il(e),this.table=new ol(e)}async create(e){const t=Array.isArray(e),n=await m(this.client,hv,{workspaces:b(e)},yv,mv);return t?n.workspaces:n.workspaces[0]}async rename(e,t){await m(this.client,uv,{key:e,name:t},gv,Fn)}async setLayout(e,t){await m(this.client,dv,{key:e,layout:JSON.stringify(t)},pv,Fn)}async retrieve(e){const t=Array.isArray(e),n=await m(this.client,Ar,{keys:b(e)},Ur,Cr);return t?n.workspaces:n.workspaces[0]}async retrieveByAuthor(e){return(await m(this.client,Ar,{author:e},Ur,Cr)).workspaces}async search(e){return(await m(this.client,Ar,{search:e},Ur,Cr)).workspaces}async page(e,t){return(await m(this.client,Ar,{offset:e,limit:t},Ur,Cr)).workspaces}async delete(e){await m(this.client,fv,{keys:b(e)},wv,Fn)}}const bv=r=>new E({type:hn,key:r}),vv=Object.freeze(Object.defineProperty({__proto__:null,Client:cl,ONTOLOGY_TYPE:hn,keyZ:Ee,newZ:ac,ontologyID:bv,remoteZ:oc,workspaceZ:ln},Symbol.toStringTag,{value:"Module"})),ll=i.z.object({host:i.z.string({error:"Host is required"}).min(1,"Host is required"),port:i.z.number({error:"Port is required"}).or(i.z.string({error:"Port is required"})),username:i.z.string().min(1,"Username is required"),password:i.z.string().min(1,"Password is required"),connectivityPollFrequency:O.z.default(O.seconds(30)),secure:i.z.boolean().optional().default(!1),name:i.z.string().optional(),retry:Do.breakerConfig.optional()});class hl extends jc{constructor(t){const n=ll.parse(t),{host:s,port:a,username:o,password:c,connectivityPollFrequency:h,secure:d,retry:f}=n,u=new sb(new yy({host:s,port:Number(a)}),f,d);u.use(bg);let N;o!=null&&c!=null&&(N=new Hp(u.unary,{username:o,password:c}),u.use(N.middleware()));const S=new oi(new ar(u.unary)),j=new $c(u.unary,S);super(u.stream,u.unary,S);l(this,"createdAt");l(this,"props");l(this,"ranges");l(this,"channels");l(this,"auth");l(this,"user");l(this,"access");l(this,"connectivity");l(this,"ontology");l(this,"workspaces");l(this,"labels");l(this,"hardware");l(this,"control");l(this,"transport");l(this,"clientVersion","0.42.0");this.createdAt=z.now(),this.props=n,this.auth=N,this.transport=u,this.channels=new zc(this,S,u.unary,j),this.connectivity=new cr(u.unary,h,this.clientVersion,n.name),this.control=new _c(this),this.ontology=new mc(u.unary,this);const U=new nl(this.transport.unary);this.labels=new Qc(this.transport.unary,this,this.ontology),this.ranges=new rl(this,U,this.transport.unary,S,this.labels,this.ontology),this.access=new Tc(this.transport.unary),this.user=new xc(this.transport.unary),this.workspaces=new cl(this.transport.unary);const ee=new qc(this.transport.unary,this),A=new Gc(this.transport.unary,this,this.ontology,this.ranges),st=new Fc(this.transport.unary,A,this);this.hardware=new Zc(A,st,ee)}get key(){return this.createdAt.valueOf().toString()}close(){this.connectivity.stopChecking()}}l(hl,"connectivity",cr);exports.AuthError=sr;exports.Channel=ci;exports.ContiguityError=pg;exports.DataType=x;exports.Density=ne;exports.Frame=V;exports.MultiSeries=Ro;exports.MultipleFoundError=Xe;exports.NotFoundError=Je;exports.QueryError=ke;exports.Rate=cs;exports.RouteError=ms;exports.Series=_e;exports.Synnax=hl;exports.TimeRange=q;exports.TimeSpan=O;exports.TimeStamp=z;exports.UnexpectedError=mt;exports.ValidationError=F;exports.access=tp;exports.channel=Op;exports.connection=Jp;exports.control=$w;exports.device=_w;exports.framer=Ow;exports.group=Ag;exports.hardware=xw;exports.isCalculated=or;exports.label=Em;exports.linePlot=mb;exports.log=Ub;exports.ontology=Lg;exports.policy=ep;exports.rack=Hw;exports.ranger=rb;exports.schematic=Hb;exports.signals=kw;exports.synnaxPropsZ=ll;exports.table=lv;exports.task=hm;exports.user=_p;exports.workspace=vv;
56
+ Please report this error to the Synnax team.`),t!=null){if(ue.matches(t))return;throw t}}}closeSend(){this.stream.closeSend()}send(e){const t=this.stream.send(e);if(t!=null)throw t}}const Os=new O(-1);var ui=(r=>(r[r.Open=0]="Open",r[r.Next=1]="Next",r[r.Prev=2]="Prev",r[r.SeekFirst=3]="SeekFirst",r[r.SeekLast=4]="SeekLast",r[r.SeekLE=5]="SeekLE",r[r.SeekGE=6]="SeekGE",r[r.Valid=7]="Valid",r[r.Error=8]="Error",r))(ui||{}),Pc=(r=>(r[r.None=0]="None",r[r.Ack=1]="Ack",r[r.Data=2]="Data",r))(Pc||{});const yw=i.z.object({command:i.z.enum(ui),span:O.z.optional(),bounds:q.z.optional(),stamp:z.z.optional(),keys:Q.array().optional(),chunkSize:i.z.number().optional()}),gw=i.z.object({variant:i.z.enum(Pc),ack:i.z.boolean(),command:i.z.enum(ui),error:Tt.payloadZ.optional().nullable(),frame:tn.optional()}),er=class er{constructor(e,t){l(this,"stream");l(this,"adapter");l(this,"value");this.stream=new Bc("Iterator",e),this.value=new V,this.adapter=t}static async _open(e,t,n,s,a={}){const o=await gn.open(n,t),c=await s.stream(er.ENDPOINT,yw,gw),h=new er(c,o);return await h.execute({command:0,keys:o.keys,bounds:new q(e),chunkSize:a.chunkSize??1e5}),h}async next(e=Os){return await this.execute({command:1,span:new O(e)})}async prev(e=Os){return await this.execute({command:2,span:new O(e)})}async seekFirst(){return await this.execute({command:3})}async seekLast(){return await this.execute({command:4})}async seekLE(e){return await this.execute({command:5,stamp:new z(e)})}async seekGE(e){return await this.execute({command:6,stamp:new z(e)})}async valid(){return await this.execute({command:7})}async close(){await this.stream.closeAndAck()}[Symbol.asyncIterator](){return new pw(this)}async execute(e){for(this.stream.send(e),this.value=new V;;){const t=await this.stream.receive();if(t.variant===1)return t.ack;this.value.push(this.adapter.adapt(new V(t.frame)))}}};l(er,"ENDPOINT","/frame/iterate");let qr=er;class pw{constructor(e){l(this,"iter");l(this,"open",!1);this.iter=e}async next(){try{let e=!0;return this.open||(await this.iter.seekFirst()||(e=!1),this.open=!0),await this.iter.next()||(e=!1),e||await this.iter.close(),{done:!e,value:this.iter.value}}catch(e){throw await this.iter.close(),e}}}const ww=i.z.object({keys:i.z.number().array(),downSampleFactor:i.z.number()}),mw=i.z.object({frame:tn}),bw="/frame/stream",Dc=(r,e)=>async t=>{let n;Array.isArray(t)||typeof t!="object"?n={channels:t,downSampleFactor:1}:n=t;const s=await gn.open(r,n.channels);n.useExperimentalCodec&&(e=e.withCodec(new fw(s.codec)));const a=await e.stream(bw,ww,mw),o=new vw(a,s);a.send({keys:s.keys,downSampleFactor:n.downSampleFactor??1});const[,c]=await a.receive();if(c!=null)throw c;return o},Mc=async(r,e,t)=>await Dc(r,e)(t);class vw{constructor(e,t){l(this,"stream");l(this,"adapter");l(this,"downsampleFactor");this.stream=new Bc("Streamer",e),this.adapter=t,this.downsampleFactor=1}get keys(){return this.adapter.keys}async next(){try{return{done:!1,value:await this.read()}}catch(e){if(ue.matches(e))return{done:!0,value:void 0};throw e}}async read(){return this.adapter.adapt(new V((await this.stream.receive()).frame))}async update(e){await this.adapter.update(e),this.stream.send({keys:this.adapter.keys,downSampleFactor:this.downsampleFactor})}close(){this.stream.closeSend()}[Symbol.asyncIterator](){return this}}class pn{constructor(e,t){l(this,"wrapped_",null);l(this,"breaker");l(this,"opener");l(this,"config");this.opener=e,Array.isArray(t)||typeof t!="object"?this.config={channels:t,downSampleFactor:1}:this.config=t,this.breaker=new Do.Breaker({maxRetries:5e3,baseInterval:O.seconds(1),scale:1})}static async open(e,t){const n=new pn(e,t);return await n.runStreamer(),n}async runStreamer(){for(;;)try{this.wrapped_!=null&&this.wrapped_.close(),this.wrapped_=await this.opener(this.config),this.breaker.reset();return}catch(e){if(this.wrapped_=null,!await this.breaker.wait())throw e;continue}}get wrapped(){if(this.wrapped_==null)throw new Error("stream closed");return this.wrapped_}async update(e){this.config.channels=e;try{await this.wrapped.update(e)}catch{return await this.runStreamer(),await this.update(e)}}async next(){try{return{done:!1,value:await this.read()}}catch(e){if(ue.matches(e))return{done:!0,value:void 0};throw e}}async read(){try{const e=await this.wrapped.read();return this.breaker.reset(),e}catch(e){if(ue.matches(e))throw e;return await this.runStreamer(),await this.read()}}close(){this.wrapped.close()}get keys(){return this.wrapped.keys}[Symbol.asyncIterator](){return this}}class Ae extends He.Observer{constructor(t,n){super(n);l(this,"streamer");l(this,"closePromise");this.streamer=t,this.closePromise=this.stream()}async close(){this.streamer.close(),await this.closePromise}async stream(){for await(const t of this.streamer)this.notify(t)}}const Tw=r=>new E({type:_s,key:r.toString()}),Oa=r=>Array.isArray(r)||typeof r!="object"||typeof r=="object"&&"key"in r?{channels:r}:r;let jc=class{constructor(e,t,n){l(this,"streamClient");l(this,"retriever");l(this,"deleter");this.streamClient=e,this.retriever=n,this.deleter=new tw(t)}async openIterator(e,t,n){return await qr._open(e,t,this.retriever,this.streamClient,n)}async openWriter(e){return await Uc._open(this.retriever,this.streamClient,Oa(e))}async openStreamer(e){return await Mc(this.retriever,this.streamClient,Oa(e))}async write(e,t,n){if(n==null){const a=t,o=await this.openWriter({start:e,channels:Object.keys(a),mode:St.Persist,errOnUnauthorized:!0,enableAutoCommit:!0,autoIndexPersistInterval:O.MAX});await o.write(a),await o.commit(),await o.close();return}const s=await this.openWriter({start:e,channels:t,mode:St.Persist,errOnUnauthorized:!0,enableAutoCommit:!0,autoIndexPersistInterval:O.MAX});await s.write(t,n),await s.close()}async read(e,t){const{single:n}=Oe(t),s=await this.readFrame(e,t);return n?s.get(t):s}async readFrame(e,t){const n=await this.openIterator(e,t),s=new V;try{for await(const a of n)s.push(a)}finally{await n.close()}return s}async delete(e,t){const{normalized:n,variant:s}=Oe(e);return s==="keys"?await this.deleter.delete({keys:n,bounds:t}):await this.deleter.delete({names:n,bounds:t})}};const Ow=Object.freeze(Object.defineProperty({__proto__:null,ALWAYS_INDEX_PERSIST_ON_AUTO_COMMIT:nw,AUTO_SPAN:Os,Client:jc,Frame:V,HardenedStreamer:pn,Iterator:qr,ONTOLOGY_TYPE:_s,ObservableStreamer:Ae,Writer:Uc,WriterClosedError:Ts,WriterCommand:Ot,WriterMode:St,createStreamOpener:Dc,frameZ:tn,ontologyID:Tw,openStreamer:Mc,seriesFromPayload:Ho,seriesToPayload:Ko},Symbol.toStringTag,{value:"Module"})),Sw=Ke.ABSOLUTE_AUTHORITY,Ew=Ke.ZERO_AUTHORITY,zw=Ke.stateZ(i.z.number()),Nw=r=>{var e,t;return r.to==null?`${(e=r.from)==null?void 0:e.resource} - ${(t=r.from)==null?void 0:t.subject.name} -> released`:r.from==null?`${r.to.resource} - released -> ${r.to.subject.name} (${r.to.authority.toString()})`:`${r.to.resource} - ${r.from.subject.name} -> ${r.to.subject.name} (${r.to.authority.toString()})`},Iw=i.z.object({transfers:i.z.array(Ke.transferZ)});class Lc extends Ae{constructor(t){super(t,n=>{const s=this.codec.decode(n.series[0].buffer,Iw);return this.merge(s),[s.transfers,!0]});l(this,"states");l(this,"codec");this.states=new Map,this.codec=new Qe.JSONCodec}subjects(){const t=new Map;return this.states.forEach(n=>t.set(n.subject.key,n.subject)),Array.from(t.values())}merge(t){t.transfers.forEach(n=>{n.from==null&&n.to==null&&console.warn("Invalid transfer: ",n),n.to==null?this.states.delete(n.from.resource):this.states.set(n.to.resource,n.to)})}}const Sa="sy_node_1_control";let _c=class{constructor(e){l(this,"framer");this.framer=e}async openStateTracker(){const e=await pn.open(async()=>await this.framer.openStreamer(Sa),Sa);return new Lc(e)}};const $w=Object.freeze(Object.defineProperty({__proto__:null,ABSOLUTE_AUTHORITY:Sw,Client:_c,StateTracker:Lc,ZERO_AUTHORITY:Ew,stateZ:zw,transferString:Nw},Symbol.toStringTag,{value:"Module"}));let Zc=class{constructor(e,t,n){l(this,"tasks");l(this,"racks");l(this,"devices");this.tasks=e,this.racks=t,this.devices=n}};const xw=Object.freeze(Object.defineProperty({__proto__:null,Client:Zc},Symbol.toStringTag,{value:"Module"})),nt=async(r,e,t,n)=>{const s=await r.openStreamer([e,t]),a=o=>{const c=[];return t!=null&&c.push(...o.get(t).series.flatMap(h=>n("delete",h))),e!=null&&c.push(...o.get(e).series.flatMap(h=>n("set",h))),[c,c.length>0]};return new Ae(s,a)},kw=Object.freeze(Object.defineProperty({__proto__:null,openObservable:nt},Symbol.toStringTag,{value:"Module"})),Aw="sy_device_set",Uw="sy_device_delete",Ea="sy_device_state",Cn="/hardware/device/retrieve",Cw="/hardware/device/create",Rw="/hardware/device/delete",Bw=i.z.object({devices:Xo.array()}),Pw=i.z.object({devices:gr.array()}),Dw=i.z.object({keys:yr.array()}),Mw=i.z.object({}),Rn=i.z.object({keys:yr.array().optional(),names:i.z.string().array().optional(),makes:i.z.string().array().optional(),models:i.z.string().array().optional(),locations:i.z.string().array().optional(),racks:Ye.array().optional(),search:i.z.string().optional(),limit:i.z.number().optional(),offset:i.z.number().optional(),ignoreNotFound:i.z.boolean().optional(),includeState:i.z.boolean().optional()}),Bn=i.z.object({devices:X(gr)});let qc=class{constructor(e,t){l(this,"type",sn);l(this,"client");l(this,"frameClient");this.client=e,this.frameClient=t}async retrieve(e,t){const n=!Array.isArray(e),s=await m(this.client,Cn,{keys:b(e),...t},Rn,Bn);return yn("Device",e,s.devices,n),n?s.devices[0]:s.devices}async search(e,t){return(await m(this.client,Cn,{search:e,...t},Rn,Bn)).devices}async page(e,t,n){return(await m(this.client,Cn,{offset:e,limit:t,...n},Rn,Bn)).devices}async create(e){const t=!Array.isArray(e),n=await m(this.client,Cw,{devices:b(e)},Bw,Pw);return t?n.devices[0]:n.devices}async delete(e){await m(this.client,Rw,{keys:b(e)},Dw,Mw)}async openDeviceTracker(){return await nt(this.frameClient,Aw,Uw,jw)}async openStateObserver(){return new Ae(await this.frameClient.openStreamer(Ea),e=>{const t=e.get(Ea);return t.length===0?[null,!1]:[t.parseJSON(Fs),!0]})}newSearcherWithOptions(e){return{type:this.type,search:async t=>await this.search(t,e),retrieve:async t=>await this.retrieve(t,e),page:async(t,n)=>await this.page(t,n,e)}}};const jw=(r,e)=>r==="delete"?e.toStrings().map(t=>({variant:r,key:t,value:void 0})):e.parseJSON(gr).map(t=>({variant:r,key:t.key,value:t})),Lw=r=>new E({type:sn,key:r}),_w=Object.freeze(Object.defineProperty({__proto__:null,Client:qc,ONTOLOGY_TYPE:sn,deviceZ:gr,keyZ:yr,newZ:Xo,ontologyID:Lw,stateZ:Fs},Symbol.toStringTag,{value:"Module"})),Pn="/hardware/rack/retrieve",Zw="/hardware/rack/create",qw="/hardware/rack/delete",za="sy_rack_state",Dn=i.z.object({keys:Ye.array().optional(),names:i.z.string().array().optional(),search:i.z.string().optional(),embedded:i.z.boolean().optional(),hostIsNode:i.z.boolean().optional(),limit:i.z.number().optional(),offset:i.z.number().optional(),includeState:i.z.boolean().optional()}),Mn=i.z.object({racks:X(rn)}),Fw=i.z.object({racks:Jo.array()}),Yw=i.z.object({racks:rn.array()}),Ww=i.z.object({keys:Ye.array()}),Vw=i.z.object({});let Fc=class{constructor(e,t,n){l(this,"type",nn);l(this,"client");l(this,"tasks");l(this,"frameClient");this.client=e,this.tasks=t,this.frameClient=n}async delete(e){await m(this.client,qw,{keys:b(e)},Ww,Vw)}async create(e){const t=!Array.isArray(e),n=await m(this.client,Zw,{racks:b(e)},Fw,Yw),s=this.sugar(n.racks);return t?s[0]:s}async search(e){const t=await m(this.client,Pn,{search:e},Dn,Mn);return this.sugar(t.racks)}async page(e,t){const n=await m(this.client,Pn,{offset:e,limit:t},Dn,Mn);return this.sugar(n.racks)}async retrieve(e,t){const{variant:n,normalized:s,single:a}=ai(e,{string:"names",number:"keys"}),o=await m(this.client,Pn,{[n]:s,includeState:t==null?void 0:t.includeState},Dn,Mn),c=this.sugar(o.racks);return yn("Rack",e,c,a),a?c[0]:c}async openStateObserver(){return new Ae(await this.frameClient.openStreamer(za),e=>{const t=e.get(za);return t.length===0?[[],!1]:[t.parseJSON(Zs),!0]})}sugar(e){return e.map(({key:t,name:n,state:s})=>new Yc(t,n,this.tasks,s))}};class Yc{constructor(e,t,n,s){l(this,"key");l(this,"name");l(this,"state");l(this,"tasks");this.key=e,this.name=t,this.tasks=n,this.state=s}async listTasks(){return await this.tasks.retrieve(this.key)}async retrieveTaskByName(e){return await this.tasks.retrieveByName(e,this.key)}async retrieveTaskByType(e){return await this.tasks.retrieveByType(e,this.key)}async createTask(e){return e.key=((BigInt(this.key)<<32n)+(BigInt(e.key??0)&0xffffffffn)).toString(),await this.tasks.create(e)}async deleteTask(e){await this.tasks.delete([e])}}const Gw=r=>new E({type:nn,key:r.toString()}),Hw=Object.freeze(Object.defineProperty({__proto__:null,Client:Fc,ONTOLOGY_TYPE:nn,Rack:Yc,keyZ:Ye,newZ:Jo,ontologyID:Gw,rackZ:rn,stateZ:Zs},Symbol.toStringTag,{value:"Module"})),Qt="sy_task_state",ut="sy_task_cmd",Kw="sy_task_set",Jw="sy_task_delete",lt=new Error("Task not created"),Wc=async(r,e)=>{const t=await e.retrieveParents(r);return t.length===0?null:t[0]};class Vc{constructor(e,t,n,s,a=!1,o=!1,c,h=null,d=null,f=null){l(this,"key");l(this,"name");l(this,"internal");l(this,"type");l(this,"config");l(this,"snapshot");l(this,"state");l(this,"frameClient");l(this,"ontologyClient");l(this,"rangeClient");this.key=e,this.name=t,this.type=n,this.config=s,this.internal=a,this.snapshot=o,c!==null&&(this.state=c),this.frameClient=h,this.ontologyClient=d,this.rangeClient=f}get payload(){return{key:this.key,name:this.name,type:this.type,config:this.config,state:this.state,internal:this.internal}}get ontologyID(){return Hc(this.key)}async executeCommand(e,t){if(this.frameClient==null)throw lt;const n=await this.frameClient.openWriter(ut),s=Zf.create();return await n.write(ut,[{task:this.key,type:e,key:s,args:t}]),await n.close(),s}async executeCommandSync(e,t,n){if(this.frameClient==null)throw lt;const s=await this.frameClient.openStreamer(Qt),a=await this.executeCommand(e,t);let o;const c=new Promise(h=>setTimeout(()=>h(!1),new O(n).milliseconds));for(;;){const h=await Promise.any([s.read(),c]);if(h===!1)throw new Error("Command timed out");const d=ir.safeParse(h.at(-1).sy_task_state);if(d.success){if(o=d.data,o.key===a)break}else throw d.error}return s.close(),o}async openStateObserver(){if(this.frameClient==null)throw lt;return new Ae(await this.frameClient.openStreamer(Qt),e=>{const t=e.get(Qt);if(t.length===0)return[null,!1];const n=ir.safeParse(t.at(-1));if(!n.success)return console.error(n.error),[null,!1];const s=n.data;return s.task!==this.key?[null,!1]:[s,!0]})}async openCommandObserver(){if(this.frameClient==null)throw lt;return new Ae(await this.frameClient.openStreamer(ut),e=>{const t=e.get(ut);if(t.length===0)return[null,!1];const n=Ys.safeParse(t.at(-1));if(!n.success)return console.error(n.error),[null,!1];const s=n.data;return s.task!==this.key?[null,!1]:[s,!0]})}async snapshottedTo(){if(this.ontologyClient==null||this.rangeClient==null)throw lt;return this.snapshot?await Wc(this.key,this.ontologyClient):null}}const Xw=i.z.object({rack:Ye.optional(),keys:We.array().optional(),names:i.z.string().array().optional(),types:i.z.string().array().optional(),includeState:i.z.boolean().optional(),offset:i.z.number().optional(),limit:i.z.number().optional()}),Qw=i.z.object({tasks:X(pr)}),em="/hardware/task/retrieve",tm="/hardware/task/create",rm="/hardware/task/delete",nm="/hardware/task/copy",sm=i.z.object({tasks:ec.array()}),im=i.z.object({tasks:pr.array()}),am=i.z.object({keys:We.array()}),om=i.z.object({}),cm=i.z.object({key:We,name:i.z.string(),snapshot:i.z.boolean()}),lm=i.z.object({task:pr});let Gc=class{constructor(e,t,n,s){l(this,"type",an);l(this,"client");l(this,"frameClient");l(this,"ontologyClient");l(this,"rangeClient");this.client=e,this.frameClient=t,this.ontologyClient=n,this.rangeClient=s}async create(e){const t=!Array.isArray(e),n=await m(this.client,tm,{tasks:b(e)},sm,im),s=this.sugar(n.tasks);return t?s[0]:s}async delete(e){await m(this.client,rm,{keys:b(e)},am,om)}async search(e){return await this.execRetrieve({keys:[e]})}async page(e,t){return await this.execRetrieve({offset:e,limit:t})}async list(e={}){return this.sugar(await this.execRetrieve(e))}async retrieve(e,t){const{single:n,normalized:s,variant:a}=ai(e,{number:"rack",string:"keys"},{convertNumericStrings:!1}),o={...t};a==="rack"?o.rack=e:o.keys=s;const c=await this.execRetrieve(o),h=this.sugar(c);return n&&a!=="rack"?h[0]:h}async copy(e,t,n){const s=await m(this.client,nm,{key:e,name:t,snapshot:n},cm,lm);return this.sugar([s.task])[0]}async retrieveByName(e,t){const n=await this.execRetrieve({names:[e],rack:t});return yn("Task",e,n,!0),this.sugar(n)[0]}async retrieveByType(e,t){const n=await this.execRetrieve({types:[e],rack:t});return this.sugar(n)}async retrieveSnapshottedTo(e){if(this.ontologyClient==null)throw lt;return await Wc(e,this.ontologyClient)}async execRetrieve(e){return(await m(this.client,em,e,Xw,Qw)).tasks}sugar(e){const t=!Array.isArray(e),n=b(e).map(({key:s,name:a,type:o,config:c,state:h,internal:d,snapshot:f})=>new Vc(s,a,o,c,d,f,h,this.frameClient,this.ontologyClient,this.rangeClient));return t?n[0]:n}async openTracker(){return await nt(this.frameClient,Kw,Jw,(e,t)=>Array.from(t).map(n=>({variant:e,key:n.toString(),value:n.toString()})))}async openStateObserver(){return new Ae(await this.frameClient.openStreamer(Qt),e=>{const t=e.get(Qt);if(t.length===0)return[null,!1];const n=ir.safeParse(t.at(-1));return n.success?[n.data,!0]:(console.error(n.error),[null,!1])})}async openCommandObserver(){return new Ae(await this.frameClient.openStreamer(ut),e=>{const t=e.get(ut);if(t.length===0)return[null,!1];const n=Ys.safeParse(t.at(-1));return n.success?[n.data,!0]:(console.error(n.error),[null,!1])})}};const Hc=r=>new E({type:an,key:r}),hm=Object.freeze(Object.defineProperty({__proto__:null,Client:Gc,ONTOLOGY_TYPE:an,Task:Vc,commandZ:Ys,getRackKey:Tg,keyZ:We,newZ:ec,ontologyID:Hc,stateZ:ir,statusZ:Qo,taskZ:pr},Symbol.toStringTag,{value:"Module"})),um=i.z.object({keys:et.array().optional(),for:ie.optional(),search:i.z.string().optional(),offset:i.z.number().optional(),limit:i.z.number().optional()}),dm=i.z.object({labels:X(wr)}),Wr=class Wr{constructor(e){l(this,"client");this.client=e}async retrieve(e){return await this.execute({keys:b(e)})}async retrieveFor(e){return await this.execute({for:e})}async search(e){return await this.execute({search:e})}async page(e,t){return await this.execute({offset:e,limit:t})}async execute(e){const[t,n]=await this.client.send(Wr.ENDPOINT,e,um,dm);if(n!=null)throw n;return t.labels}};l(Wr,"ENDPOINT","/label/retrieve");let Fr=Wr;const Kc=wr.extend({key:et.optional()}),fm=i.z.object({labels:Kc.array()}),ym=i.z.object({labels:wr.array()}),gm=i.z.object({keys:et.array()}),Jc=i.z.object({id:ie,labels:et.array(),replace:i.z.boolean().optional()}),pm=Jc.omit({replace:!0}),jn=i.z.object({}),wm="/label/create",mm="/label/delete",bm="/label/set",vm="/label/remove";let Xc=class{constructor(e){l(this,"client");this.client=e}async create(e){return(await m(this.client,wm,{labels:b(e)},fm,ym)).labels}async delete(e){await m(this.client,mm,{keys:b(e)},gm,jn)}async set(e,t,{replace:n}={}){await m(this.client,bm,{id:e,labels:t,replace:n},Jc,jn)}async remove(e,t){await m(this.client,vm,{id:e,labels:t},pm,jn)}};const Tm="sy_label_set",Om="sy_label_delete";let Qc=class{constructor(e,t,n){l(this,"type","label");l(this,"retriever");l(this,"writer");l(this,"frameClient");l(this,"ontology");this.writer=new Xc(e),this.retriever=new Fr(e),this.frameClient=t,this.ontology=n}async search(e){return await this.retriever.search(e)}async retrieve(e){const t=Array.isArray(e),n=await this.retriever.retrieve(e);return t?n:n[0]}async retrieveFor(e){return await this.retriever.retrieveFor(new E(e))}async label(e,t,n={}){await this.writer.set(new E(e),t,n)}async removeLabels(e,t){await this.writer.remove(new E(e),t)}async page(e,t){return await this.retriever.page(e,t)}async create(e){const t=Array.isArray(e),n=await this.writer.create(e);return t?n:n[0]}async delete(e){await this.writer.delete(e)}async openChangeTracker(){return await nt(this.frameClient,Tm,Om,Sm)}async trackLabelsOf(e){const t=new He.Observer,n=(await this.retrieveFor(e)).map(a=>({id:el(a.key),key:a.key,name:a.name,data:a}));return(await this.ontology.openDependentTracker({target:new E(e),dependents:n,relationshipType:"labeled_by"})).onChange(a=>t.notify(a.map(o=>{var c,h;return{key:o.id.key,color:(c=o.data)==null?void 0:c.color,name:(h=o.data)==null?void 0:h.name}}))),t}};const Sm=(r,e)=>r==="delete"?e.toUUIDs().map(t=>({variant:r,key:t})):e.parseJSON(wr).map(t=>({variant:r,key:t.key,value:t})),el=r=>new E({type:Ws,key:r}),Em=Object.freeze(Object.defineProperty({__proto__:null,Client:Qc,ONTOLOGY_TYPE:Ws,Retriever:Fr,Writer:Xc,keyZ:et,labelZ:wr,newZ:Kc,ontologyID:el},Symbol.toStringTag,{value:"Module"})),zm="sy_range_alias_set",Nm="sy_range_alias_delete",Im=i.z.object({range:ae,aliases:i.z.string().array()}),$m=i.z.object({aliases:i.z.record(i.z.string(),Q)}),xm=i.z.object({range:ae,aliases:i.z.record(Q.or(i.z.string()),i.z.string())}),km=i.z.unknown(),Am=i.z.object({range:ae,channels:Q.array()}),Um=i.z.unknown(),Cm=i.z.object({range:ae}),Rm=i.z.object({aliases:i.z.record(i.z.string(),i.z.string())}),be=class be{constructor(e,t,n){l(this,"frameClient");l(this,"cache",new Map);l(this,"client");l(this,"rangeKey");this.rangeKey=e,this.cache=new Map,this.client=n,this.frameClient=t}async resolve(e){const t=[],n=typeof e=="string",s={};if(n){const o=this.cache.get(e);if(o!=null)return o;t.push(e)}else e.forEach(o=>{const c=this.cache.get(o);c!=null?s[o]=c:t.push(o)});if(t.length===0)return s;const a=await m(this.client,be.RESOLVE_ENDPOINT,{range:this.rangeKey,aliases:t},Im,$m);return Object.entries(a.aliases).forEach(([o,c])=>this.cache.set(o,c)),n?a.aliases[t[0]]:{...s,...a.aliases}}async set(e){await m(this.client,be.SET_ENDPOINT,{range:this.rangeKey,aliases:e},xm,km)}async list(){return(await m(this.client,be.LIST_ENDPOINT,{range:this.rangeKey},Cm,Rm)).aliases}async delete(e){await m(this.client,be.DELETE_ENDPOINT,{range:this.rangeKey,channels:e},Am,Um)}async openChangeTracker(){return await nt(this.frameClient,zm,Nm,Dm(this.rangeKey))}};l(be,"SET_ENDPOINT","/range/alias/set"),l(be,"RESOLVE_ENDPOINT","/range/alias/resolve"),l(be,"LIST_ENDPOINT","/range/alias/list"),l(be,"DELETE_ENDPOINT","/range/alias/delete");let Ss=be;const Bm=i.z.object({range:ae,channel:Q,alias:i.z.string()}),Pm="---",Dm=r=>(e,t)=>e==="delete"?t.toStrings().filter(n=>n.split(Pm)[0]===r).map(n=>({variant:e,key:n,value:void 0})):t.parseJSON(Bm).map(n=>({variant:e,key:n.alias,value:n})),di=i.z.object({range:ae,key:i.z.string(),value:i.z.string()}),Mm=i.z.object({range:ae,keys:i.z.string().array()}),jm=i.z.object({pairs:X(di)}),Lm=i.z.object({range:ae,pairs:di.array()}),_m=i.z.object({range:ae,keys:i.z.string().array()}),Le=class Le{constructor(e,t,n){l(this,"rangeKey");l(this,"client");l(this,"frameClient");this.rangeKey=e,this.client=t,this.frameClient=n}async get(e){const t=await m(this.client,Le.GET_ENDPOINT,{range:this.rangeKey,keys:b(e)},Mm,jm);return typeof e=="string"?t.pairs[0].value:Object.fromEntries(t.pairs.map(n=>[n.key,n.value]))}async list(){return this.get([])}async set(e,t=""){let n;Hr(e)?n=Object.entries(e).map(([s,a])=>({range:this.rangeKey,key:s,value:a})):n=[{range:this.rangeKey,key:e,value:t}],await m(this.client,Le.SET_ENDPOINT,{range:this.rangeKey,pairs:n},Lm,i.z.unknown())}async delete(e){await m(this.client,Le.DELETE_ENDPOINT,{range:this.rangeKey,keys:b(e)},_m,i.z.unknown())}async openTracker(){return await nt(this.frameClient,"sy_range_kv_set","sy_range_kv_delete",(e,t)=>e==="delete"?t.toStrings().map(n=>{const[s,a]=n.split("<--->",2);return{variant:e,key:n,value:{range:s,key:a,value:""}}}):t.parseJSON(di).map(n=>({variant:e,key:`${n.range}${n.key}`,value:n})))}};l(Le,"GET_ENDPOINT","/range/kv/get"),l(Le,"SET_ENDPOINT","/range/kv/set"),l(Le,"DELETE_ENDPOINT","/range/kv/delete");let lr=Le;class tl{constructor(e,t=q.ZERO,n,s,a,o,c,h,d,f,u){l(this,"key");l(this,"name");l(this,"kv");l(this,"timeRange");l(this,"color");l(this,"channels");l(this,"aliaser");l(this,"frameClient");l(this,"labelClient");l(this,"ontologyClient");l(this,"rangeClient");this.key=n,this.name=e,this.timeRange=t,this.frameClient=a,this.color=s,this.kv=o,this.aliaser=c,this.channels=h,this.labelClient=d,this.ontologyClient=f,this.rangeClient=u}get ontologyID(){return je(this.key)}get payload(){return{key:this.key,name:this.name,timeRange:this.timeRange,color:this.color}}async setAlias(e,t){const n=await this.channels.retrieve(e);if(n.length===0)throw new ke(`Channel ${e} does not exist`);await this.aliaser.set({[n[0].key]:t})}async deleteAlias(...e){await this.aliaser.delete(e)}async listAliases(){return await this.aliaser.list()}async resolveAlias(e){return await this.aliaser.resolve(e)}async openAliasTracker(){return await this.aliaser.openChangeTracker()}async retrieveParent(){return this.rangeClient.retrieveParent(this.key)}async retrieveChildren(){const e=(await this.ontologyClient.retrieveChildren(this.ontologyID,{excludeFieldData:!0,types:["range"]})).map(t=>t.id.key);return await this.rangeClient.retrieve(e)}async read(e){return await this.frameClient.read(this.timeRange,e)}async labels(){return await this.labelClient.retrieveFor(je(this.key))}async addLabel(...e){await this.labelClient.label(je(this.key),e)}async removeLabel(...e){await this.labelClient.removeLabels(je(this.key),e)}async openChildRangeTracker(){const e=new He.Observer,t=(await this.retrieveChildren()).map(s=>{const a=je(s.key);return{id:a,key:a.toString(),name:s.name,data:s.payload}}),n=await this.ontologyClient.openDependentTracker({target:this.ontologyID,dependents:t,resourceType:"range"});return n.onChange(s=>e.notify(this.rangeClient.resourcesToRanges(s))),e.setCloser(async()=>await n.close()),e}async openParentRangeTracker(){const e=new He.Observer,t=await this.retrieveParent();if(t==null)return null;const n=je(t.key),s={id:n,key:n.toString(),name:t.name,data:t.payload},a=await this.ontologyClient.openDependentTracker({target:this.ontologyID,dependents:[s],relationshipDirection:"to"});return a.onChange(o=>{const c=this.rangeClient.resourcesToRanges(o);if(c.length===0)return;const h=c[0];e.notify(h)}),e.setCloser(async()=>await a.close()),e}}const Zm=(r,e)=>Ff(r.timeRange,e.timeRange),qm=i.z.object({keys:ae.array().optional(),names:i.z.array(i.z.string()).optional(),term:i.z.string().optional(),overlapsWith:q.z.optional(),limit:i.z.number().int().optional(),offset:i.z.number().int().optional(),hasLabels:et.array().optional()}),Fm="/range/retrieve",Ym=i.z.object({ranges:X(mr)});let rl=class{constructor(e,t,n,s,a,o){l(this,"type","range");l(this,"frameClient");l(this,"writer");l(this,"unaryClient");l(this,"channels");l(this,"labelClient");l(this,"ontologyClient");this.frameClient=e,this.writer=t,this.unaryClient=n,this.channels=s,this.labelClient=a,this.ontologyClient=o}async create(e,t){const n=!Array.isArray(e),s=this.sugarMany(await this.writer.create(b(e),t));return n?s[0]:s}async rename(e,t){await this.writer.rename(e,t)}async delete(e){await this.writer.delete(b(e))}async search(e){return this.sugarMany(await this.execRetrieve({term:e}))}async page(e,t){return this.sugarMany(await this.execRetrieve({offset:e,limit:t}))}async retrieve(e){if(typeof e=="object"&&"start"in e)return await this.execRetrieve({overlapsWith:new q(e)});const{single:t,actual:n,variant:s,normalized:a,empty:o}=rc(e);if(o)return[];const c=await this.execRetrieve({[s]:a});if(!t)return c;if(c.length===0)throw new Je(`range matching ${n} not found`);if(c.length>1)throw new Xe(`multiple ranges matching ${n} found`);return c[0]}getKV(e){return new lr(e,this.unaryClient,this.frameClient)}async execRetrieve(e){const{ranges:t}=await m(this.unaryClient,Fm,e,qm,Ym);return this.sugarMany(t)}async retrieveParent(e){const t=await this.ontologyClient.retrieveParents(je(e));if(t.length===0)return null;const n=t[0];return n.id.type!=="range"?null:await this.retrieve(n.id.key)}sugarOne(e){return new tl(e.name,e.timeRange,e.key,e.color,this.frameClient,new lr(e.key,this.unaryClient,this.frameClient),new Ss(e.key,this.frameClient,this.unaryClient),this.channels,this.labelClient,this.ontologyClient,this)}sugarMany(e){return e.map(t=>this.sugarOne(t))}async openTracker(){return await nt(this.frameClient,"sy_range_set","sy_range_delete",(e,t)=>e==="delete"?t.toUUIDs().map(s=>({variant:e,key:s,value:void 0})):this.sugarMany(t.parseJSON(mr)).map(s=>({variant:e,key:s.key,value:s})))}resourcesToRanges(e){return e.map(t=>this.resourceToRange(t))}resourceToRange(e){var t,n,s;return this.sugarOne({key:e.id.key,name:(t=e.data)==null?void 0:t.name,timeRange:new q((n=e.data)==null?void 0:n.timeRange),color:(s=e.data)==null?void 0:s.color})}};const je=r=>new E({type:Gs,key:r}),Wm=r=>new E({type:Hs,key:r}),Vm=i.z.object({ranges:mr.array()}),Gm=i.z.object({parent:ie.optional(),ranges:tc.array()}),Hm=i.z.object({keys:ae.array()}),Km=i.z.object({}),Jm=i.z.object({key:ae,name:Vs}),Xm=i.z.object({}),Qm="/range/create",eb="/range/delete",tb="/range/rename";class nl{constructor(e){l(this,"client");this.client=e}async rename(e,t){await m(this.client,tb,{key:e,name:t},Jm,Xm)}async create(e,t){return(await m(this.client,Qm,{ranges:e,...t},Gm,Vm)).ranges}async delete(e){await m(this.client,eb,{keys:e},Hm,Km)}}const rb=Object.freeze(Object.defineProperty({__proto__:null,ALIAS_ONTOLOGY_TYPE:Hs,Client:rl,KV:lr,ONTOLOGY_TYPE:Gs,Range:tl,Writer:nl,aliasOntologyID:Wm,analyzeParams:rc,keyZ:ae,nameZ:Vs,newZ:tc,ontologyID:je,payloadZ:mr,sort:Zm},Symbol.toStringTag,{value:"Module"})),nb="/api/v1/";class sb{constructor(e,t={},n=!1){l(this,"url");l(this,"unary");l(this,"stream");l(this,"secure");this.secure=n,this.url=e.child(nb);const s=new Qe.JSONCodec;this.unary=ed(new Qu(this.url,s,this.secure),t),this.stream=new ad(this.url,s,this.secure)}use(...e){this.unary.use(...e),this.stream.use(...e)}}const ib="/workspace/lineplot/retrieve",ab="/workspace/lineplot/create",ob="/workspace/lineplot/rename",cb="/workspace/lineplot/set-data",lb="/workspace/lineplot/delete",hb=i.z.object({keys:Nt.array()}),ub=i.z.object({workspace:Ee,linePlots:sc.array()}),db=i.z.object({key:Nt,name:i.z.string()}),fb=i.z.object({key:Nt,data:i.z.string()}),yb=i.z.object({keys:Nt.array()}),gb=i.z.object({linePlots:X(on)}),pb=i.z.object({linePlots:on.array()}),Ln=i.z.object({});let sl=class{constructor(e){l(this,"client");this.client=e}async create(e,t){const n=Array.isArray(t),s=await m(this.client,ab,{workspace:e,linePlots:b(t)},ub,pb);return n?s.linePlots:s.linePlots[0]}async rename(e,t){await m(this.client,ob,{key:e,name:t},db,Ln)}async setData(e,t){await m(this.client,cb,{key:e,data:JSON.stringify(t)},fb,Ln)}async retrieve(e){const t=Array.isArray(e),n=await m(this.client,ib,{keys:b(e)},hb,gb);return t?n.linePlots:n.linePlots[0]}async delete(e){await m(this.client,lb,{keys:b(e)},yb,Ln)}};const wb=r=>new E({type:Js,key:r}),mb=Object.freeze(Object.defineProperty({__proto__:null,Client:sl,ONTOLOGY_TYPE:Js,keyZ:Nt,linePlotZ:on,newZ:sc,ontologyID:wb},Symbol.toStringTag,{value:"Module"})),bb="/workspace/log/retrieve",vb="/workspace/log/create",Tb="/workspace/log/rename",Ob="/workspace/log/set-data",Sb="/workspace/log/delete",Eb=i.z.object({keys:It.array()}),zb=i.z.object({workspace:Ee,logs:ic.array()}),Nb=i.z.object({key:It,name:i.z.string()}),Ib=i.z.object({key:It,data:i.z.string()}),$b=i.z.object({keys:It.array()}),xb=i.z.object({logs:cn.array()}),kb=i.z.object({logs:cn.array()}),_n=i.z.object({});let il=class{constructor(e){l(this,"client");this.client=e}async create(e,t){const n=Array.isArray(t),s=await m(this.client,vb,{workspace:e,logs:b(t)},zb,kb);return n?s.logs:s.logs[0]}async rename(e,t){await m(this.client,Tb,{key:e,name:t},Nb,_n)}async setData(e,t){await m(this.client,Ob,{key:e,data:JSON.stringify(t)},Ib,_n)}async retrieve(e){const t=Array.isArray(e),n=await m(this.client,bb,{keys:b(e)},Eb,xb);return t?n.logs:n.logs[0]}async delete(e){await m(this.client,Sb,{keys:b(e)},$b,_n)}};const Ab=r=>new E({type:Xs,key:r}),Ub=Object.freeze(Object.defineProperty({__proto__:null,Client:il,ONTOLOGY_TYPE:Xs,keyZ:It,logZ:cn,newZ:ic,ontologyID:Ab},Symbol.toStringTag,{value:"Module"})),Cb="/workspace/schematic/retrieve",Rb="/workspace/schematic/create",Bb="/workspace/schematic/rename",Pb="/workspace/schematic/set-data",Db="/workspace/schematic/delete",Mb="/workspace/schematic/copy",jb=i.z.object({keys:rt.array()}),Lb=i.z.object({workspace:Ee,schematics:cc.array()}),_b=i.z.object({key:rt,name:i.z.string()}),Zb=i.z.object({key:rt,data:i.z.string()}),qb=i.z.object({keys:rt.array()}),Fb=i.z.object({key:rt,name:i.z.string(),snapshot:i.z.boolean()}),Yb=i.z.object({schematics:X(Qs)}),Wb=i.z.object({schematics:Qs.array()}),Vb=i.z.object({schematic:un}),Zn=i.z.object({});let al=class{constructor(e){l(this,"client");this.client=e}async create(e,t){const n=Array.isArray(t),s=await m(this.client,Rb,{workspace:e,schematics:b(t)},Lb,Wb);return n?s.schematics:s.schematics[0]}async rename(e,t){await m(this.client,Bb,{key:e,name:t},_b,Zn)}async setData(e,t){await m(this.client,Pb,{key:e,data:JSON.stringify(t)},Zb,Zn)}async retrieve(e){const t=Array.isArray(e),n=await m(this.client,Cb,{keys:b(e)},jb,Yb);return t?n.schematics:n.schematics[0]}async delete(e){await m(this.client,Db,{keys:b(e)},qb,Zn)}async copy(e,t,n){return(await m(this.client,Mb,{key:e,name:t,snapshot:n},Fb,Vb)).schematic}};const Gb=r=>new E({type:ei,key:r}),Hb=Object.freeze(Object.defineProperty({__proto__:null,Client:al,ONTOLOGY_TYPE:ei,keyZ:rt,newZ:cc,ontologyID:Gb,remoteZ:Qs,schematicZ:un},Symbol.toStringTag,{value:"Module"})),Kb="/workspace/table/retrieve",Jb="/workspace/table/create",Xb="/workspace/table/rename",Qb="/workspace/table/set-data",ev="/workspace/table/delete",tv=i.z.object({keys:$t.array()}),rv=i.z.object({workspace:Ee,tables:lc.array()}),nv=i.z.object({key:$t,name:i.z.string()}),sv=i.z.object({key:$t,data:i.z.string()}),iv=i.z.object({keys:$t.array()}),av=i.z.object({tables:ri.array()}),ov=i.z.object({tables:ri.array()}),qn=i.z.object({});let ol=class{constructor(e){l(this,"client");this.client=e}async create(e,t){const n=Array.isArray(t),s=await m(this.client,Jb,{workspace:e,tables:b(t)},rv,ov);return n?s.tables:s.tables[0]}async rename(e,t){await m(this.client,Xb,{key:e,name:t},nv,qn)}async setData(e,t){await m(this.client,Qb,{key:e,data:JSON.stringify(t)},sv,qn)}async retrieve(e){const t=Array.isArray(e),n=await m(this.client,Kb,{keys:b(e)},tv,av);return t?n.tables:n.tables[0]}async delete(e){await m(this.client,ev,{keys:b(e)},iv,qn)}};const cv=r=>new E({type:ni,key:r}),lv=Object.freeze(Object.defineProperty({__proto__:null,Client:ol,ONTOLOGY_TYPE:ni,keyZ:$t,newZ:lc,ontologyID:cv,remoteZ:ri,tableZ:ti},Symbol.toStringTag,{value:"Module"})),Ar="/workspace/retrieve",hv="/workspace/create",uv="/workspace/rename",dv="/workspace/set-layout",fv="/workspace/delete",Ur=i.z.object({keys:Ee.array().optional(),search:i.z.string().optional(),author:tt.optional(),offset:i.z.number().optional(),limit:i.z.number().optional()}),yv=i.z.object({workspaces:ac.array()}),gv=i.z.object({key:Ee,name:i.z.string()}),pv=i.z.object({key:Ee,layout:i.z.string()}),wv=i.z.object({keys:Ee.array()}),Cr=i.z.object({workspaces:X(ln)}),mv=i.z.object({workspaces:oc.array()}),Fn=i.z.object({});class cl{constructor(e){l(this,"type",hn);l(this,"schematic");l(this,"linePlot");l(this,"log");l(this,"table");l(this,"client");this.client=e,this.schematic=new al(e),this.linePlot=new sl(e),this.log=new il(e),this.table=new ol(e)}async create(e){const t=Array.isArray(e),n=await m(this.client,hv,{workspaces:b(e)},yv,mv);return t?n.workspaces:n.workspaces[0]}async rename(e,t){await m(this.client,uv,{key:e,name:t},gv,Fn)}async setLayout(e,t){await m(this.client,dv,{key:e,layout:JSON.stringify(t)},pv,Fn)}async retrieve(e){const t=Array.isArray(e),n=await m(this.client,Ar,{keys:b(e)},Ur,Cr);return t?n.workspaces:n.workspaces[0]}async retrieveByAuthor(e){return(await m(this.client,Ar,{author:e},Ur,Cr)).workspaces}async search(e){return(await m(this.client,Ar,{search:e},Ur,Cr)).workspaces}async page(e,t){return(await m(this.client,Ar,{offset:e,limit:t},Ur,Cr)).workspaces}async delete(e){await m(this.client,fv,{keys:b(e)},wv,Fn)}}const bv=r=>new E({type:hn,key:r}),vv=Object.freeze(Object.defineProperty({__proto__:null,Client:cl,ONTOLOGY_TYPE:hn,keyZ:Ee,newZ:ac,ontologyID:bv,remoteZ:oc,workspaceZ:ln},Symbol.toStringTag,{value:"Module"})),ll=i.z.object({host:i.z.string({error:"Host is required"}).min(1,"Host is required"),port:i.z.number({error:"Port is required"}).or(i.z.string({error:"Port is required"})),username:i.z.string().min(1,"Username is required"),password:i.z.string().min(1,"Password is required"),connectivityPollFrequency:O.z.default(O.seconds(30)),secure:i.z.boolean().optional().default(!1),name:i.z.string().optional(),retry:Do.breakerConfig.optional()});class hl extends jc{constructor(t){const n=ll.parse(t),{host:s,port:a,username:o,password:c,connectivityPollFrequency:h,secure:d,retry:f}=n,u=new sb(new yy({host:s,port:Number(a)}),f,d);u.use(bg);let N;o!=null&&c!=null&&(N=new Hp(u.unary,{username:o,password:c}),u.use(N.middleware()));const S=new oi(new ar(u.unary)),j=new $c(u.unary,S);super(u.stream,u.unary,S);l(this,"createdAt");l(this,"props");l(this,"ranges");l(this,"channels");l(this,"auth");l(this,"user");l(this,"access");l(this,"connectivity");l(this,"ontology");l(this,"workspaces");l(this,"labels");l(this,"hardware");l(this,"control");l(this,"transport");l(this,"clientVersion","0.42.1");this.createdAt=z.now(),this.props=n,this.auth=N,this.transport=u,this.channels=new zc(this,S,u.unary,j),this.connectivity=new cr(u.unary,h,this.clientVersion,n.name),this.control=new _c(this),this.ontology=new mc(u.unary,this);const U=new nl(this.transport.unary);this.labels=new Qc(this.transport.unary,this,this.ontology),this.ranges=new rl(this,U,this.transport.unary,S,this.labels,this.ontology),this.access=new Tc(this.transport.unary),this.user=new xc(this.transport.unary),this.workspaces=new cl(this.transport.unary);const ee=new qc(this.transport.unary,this),A=new Gc(this.transport.unary,this,this.ontology,this.ranges),st=new Fc(this.transport.unary,A,this);this.hardware=new Zc(A,st,ee)}get key(){return this.createdAt.valueOf().toString()}close(){this.connectivity.stopChecking()}}l(hl,"connectivity",cr);exports.AuthError=sr;exports.Channel=ci;exports.ContiguityError=pg;exports.DataType=x;exports.Density=ne;exports.Frame=V;exports.MultiSeries=Ro;exports.MultipleFoundError=Xe;exports.NotFoundError=Je;exports.QueryError=ke;exports.Rate=cs;exports.RouteError=ms;exports.Series=_e;exports.Synnax=hl;exports.TimeRange=q;exports.TimeSpan=O;exports.TimeStamp=z;exports.UnexpectedError=mt;exports.ValidationError=F;exports.access=tp;exports.channel=Op;exports.connection=Jp;exports.control=$w;exports.device=_w;exports.framer=Ow;exports.group=Ag;exports.hardware=xw;exports.isCalculated=or;exports.label=Em;exports.linePlot=mb;exports.log=Ub;exports.ontology=Lg;exports.policy=ep;exports.rack=Hw;exports.ranger=rb;exports.schematic=Hb;exports.signals=kw;exports.synnaxPropsZ=ll;exports.table=lv;exports.task=hm;exports.user=_p;exports.workspace=vv;
package/dist/client.js CHANGED
@@ -9319,7 +9319,7 @@ const Ac = i.enum(["disconnected", "connecting", "connected", "failed"]), Uc = i
9319
9319
  error: void 0,
9320
9320
  message: "Disconnected",
9321
9321
  clientServerCompatible: !1,
9322
- clientVersion: "0.42.0"
9322
+ clientVersion: "0.42.1"
9323
9323
  }, ya = (r, e, t) => {
9324
9324
  const n = t ? "cluster" : "client";
9325
9325
  return `Synnax cluster node version ${r != null ? `${r} ` : ""}is too ${t ? "old" : "new"} for client version ${e}.
@@ -11856,7 +11856,7 @@ class Qb extends Lc {
11856
11856
  /**
11857
11857
  * The version of the client.
11858
11858
  */
11859
- l(this, "clientVersion", "0.42.0");
11859
+ l(this, "clientVersion", "0.42.1");
11860
11860
  this.createdAt = x.now(), this.props = n, this.auth = N, this.transport = u, this.channels = new Nc(this, O, u.unary, L), this.connectivity = new or(
11861
11861
  u.unary,
11862
11862
  h,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@synnaxlabs/client",
3
- "version": "0.42.0",
3
+ "version": "0.42.1",
4
4
  "description": "The Synnax Client Library",
5
5
  "keywords": [
6
6
  "synnax",
@@ -27,8 +27,8 @@
27
27
  "async-mutex": "^0.5.0",
28
28
  "uuid": "^11.1.0",
29
29
  "zod": "^4.0.0-beta",
30
- "@synnaxlabs/freighter": "0.42.0",
31
- "@synnaxlabs/x": "0.42.0"
30
+ "@synnaxlabs/x": "0.42.1",
31
+ "@synnaxlabs/freighter": "0.42.1"
32
32
  },
33
33
  "devDependencies": {
34
34
  "@types/node": "^22.13.10",
@@ -38,9 +38,9 @@
38
38
  "typescript": "^5.8.3",
39
39
  "vite": "^6.2.5",
40
40
  "vitest": "^3.1.1",
41
- "@synnaxlabs/tsconfig": "0.0.2",
42
41
  "@synnaxlabs/vite-plugin": "0.0.1",
43
- "eslint-config-synnaxlabs": "0.0.1"
42
+ "eslint-config-synnaxlabs": "0.0.1",
43
+ "@synnaxlabs/tsconfig": "0.0.2"
44
44
  },
45
45
  "type": "module",
46
46
  "types": "dist/index.d.ts",