"use strict";var Fa=Object.defineProperty;var Ja=(r,e,t)=>e in r?Fa(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t;var c=(r,e,t)=>Ja(r,typeof e!="symbol"?e+"":e,t);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("zod"),b=r=>Array.isArray(r)?r:[r];var Ka=Object.defineProperty,Ha=(r,e,t)=>e in r?Ka(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,k=(r,e,t)=>Ha(r,typeof e!="symbol"?e+"":e,t);const Xa=r=>{const e=r.replace(/_[a-z]/g,t=>t[1].toUpperCase());return e.length>1&&e[0]===e[0].toUpperCase()&&e[1]===e[1].toUpperCase()||e.length===0?e:e[0].toLowerCase()+e.slice(1)},Ds=r=>{const e=(t,n=sn)=>{if(typeof t=="string")return r(t);if(Array.isArray(t))return t.map(o=>e(o,n));if(!Br(t))return t;n=to(n);const i={},a=t;return Object.keys(a).forEach(o=>{let l=a[o];const u=r(o);n.recursive&&(Br(l)?Ln(l,n.keepTypesOnRecursion)||(l=e(l,n)):n.recursiveInArray&&Un(l)&&(l=[...l].map(h=>{let y=h;return Br(h)?Ln(y,n.keepTypesOnRecursion)||(y=e(h,n)):Un(h)&&(y=e({key:h},n).key),y}))),i[u]=l}),i};return e},js=Ds(Xa),Qa=r=>r.replace(/([a-z0-9])([A-Z])/g,(e,t,n)=>`${t}_${n.toLowerCase()}`),eo=Ds(Qa),sn={recursive:!0,recursiveInArray:!0,keepTypesOnRecursion:[Number,String,Uint8Array]},to=(r=sn)=>(r.recursive==null?r=sn:r.recursiveInArray??(r.recursiveInArray=!1),r),Un=r=>r!=null&&Array.isArray(r),Br=r=>r!=null&&typeof r=="object"&&!Array.isArray(r),Ln=(r,e)=>(e||[]).some(t=>r instanceof t),Ms=r=>r!=null&&typeof r=="object"&&!Array.isArray(r);var ro=Object.defineProperty,no=(r,e,t)=>e in r?ro(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,$t=(r,e,t)=>no(r,typeof e!="symbol"?e+"":e,t);let so=class{constructor(){$t(this,"contentType","application/json"),$t(this,"decoder"),$t(this,"encoder"),this.decoder=new TextDecoder,this.encoder=new TextEncoder}encode(r){return this.encoder.encode(this.encodeString(r)).buffer}decode(r,e){return this.decodeString(this.decoder.decode(r),e)}decodeString(r,e){const t=JSON.parse(r),n=js(t);return e!=null?e.parse(n):n}encodeString(r){const e=eo(r);return JSON.stringify(e,(t,n)=>ArrayBuffer.isView(n)?Array.from(n):Ms(n)&&"encode_value"in n?typeof n.value=="bigint"?n.value.toString():n.value:typeof n=="bigint"?n.toString():n)}static registerCustomType(){}},io=class{constructor(){$t(this,"contentType","text/csv")}encode(r){const e=this.encodeString(r);return new TextEncoder().encode(e).buffer}decode(r,e){const t=new TextDecoder().decode(r);return this.decodeString(t,e)}encodeString(r){if(!Array.isArray(r)||r.length===0||!Ms(r[0]))throw new Error("Payload must be an array of objects");const e=Object.keys(r[0]),t=[e.join(",")];return r.forEach(n=>{const i=e.map(a=>JSON.stringify(n[a]??""));t.push(i.join(","))}),t.join(` `)}decodeString(r,e){const[t,...n]=r.trim().split(` `).map(o=>o.trim());if(t.length===0)return e!=null?e.parse({}):{};const i=t.split(",").map(o=>o.trim()),a={};return i.forEach(o=>{a[o]=[]}),n.forEach(o=>{const l=o.split(",").map(u=>u.trim());i.forEach((u,h)=>{const y=this.parseValue(l[h]);y!=null&&a[u].push(y)})}),e!=null?e.parse(a):a}parseValue(r){if(r==null||r.length===0)return null;const e=Number(r);return isNaN(e)?r.startsWith('"')&&r.endsWith('"')?r.slice(1,-1):r:e}static registerCustomType(){}},ao=class{constructor(){$t(this,"contentType","text/plain")}encode(r){return new TextEncoder().encode(r).buffer}decode(r,e){const t=new TextDecoder().decode(r);return e!=null?e.parse(t):t}};const tr=new so;new io;new ao;const vr=s.z.tuple([s.z.number(),s.z.number()]);s.z.tuple([s.z.bigint(),s.z.bigint()]);const Bs=s.z.object({width:s.z.number(),height:s.z.number()}),oo=s.z.object({signedWidth:s.z.number(),signedHeight:s.z.number()}),co=["width","height"];s.z.enum(co);const lo=["start","center","end"],uo=["signedWidth","signedHeight"];s.z.enum(uo);const yr=s.z.object({x:s.z.number(),y:s.z.number()}),ho=s.z.object({clientX:s.z.number(),clientY:s.z.number()}),yo=["x","y"],Zs=s.z.enum(yo),Us=["top","right","bottom","left"];s.z.enum(Us);const fo=["left","right"],Ls=s.z.enum(fo),go=["top","bottom"],_s=s.z.enum(go),Ys=["center"],_n=s.z.enum(Ys),po=[...Us,...Ys],qs=s.z.enum(po);s.z.enum(lo);const mo=["first","last"];s.z.enum(mo);const wo=s.z.object({lower:s.z.number(),upper:s.z.number()}),bo=s.z.object({lower:s.z.bigint(),upper:s.z.bigint()});s.z.union([wo,vr]);s.z.union([bo,vr]);s.z.union([Zs,qs]);s.z.union([Zs,qs,s.z.instanceof(String)]);const vo=r=>typeof r=="bigint"||r instanceof BigInt,Ze=(r,e)=>vo(r)?r.valueOf()*BigInt(e.valueOf()):r.valueOf()*Number(e.valueOf()),xe=(r,e)=>{const t={};if(typeof r=="number"||typeof r=="bigint")e!=null?(t.lower=r,t.upper=e):(t.lower=typeof r=="bigint"?0n:0,t.upper=r);else if(Array.isArray(r)){if(r.length!==2)throw new Error("bounds: expected array of length 2");[t.lower,t.upper]=r}else return Yn(r);return Yn(t)},Yn=r=>r.lower>r.upper?{lower:r.upper,upper:r.lower}:r,qn=(r,e)=>{const t=xe(r);return e=t.upper?t.upper-(typeof t.upper=="number"?1:1n):e};s.z.object({x:Ls.or(_n),y:_s.or(_n)});const To=s.z.object({x:Ls,y:_s}),Oo=Object.freeze({x:"left",y:"top"}),zo=(r,e)=>r.x===e.x&&r.y===e.y,Wn=s.z.union([s.z.number(),yr,vr,Bs,oo,ho]),Eo=(r,e)=>{if(typeof r=="string"){if(e===void 0)throw new Error("The y coordinate must be given.");return r==="x"?{x:e,y:0}:{x:0,y:e}}return typeof r=="number"?{x:r,y:e??r}:Array.isArray(r)?{x:r[0],y:r[1]}:"signedWidth"in r?{x:r.signedWidth,y:r.signedHeight}:"clientX"in r?{x:r.clientX,y:r.clientY}:"width"in r?{x:r.width,y:r.height}:{x:r.x,y:r.y}},Gn=Object.freeze({x:0,y:0}),Xt=s.z.union([s.z.number(),s.z.string()]);s.z.object({top:Xt,left:Xt,width:Xt,height:Xt});s.z.object({left:s.z.number(),top:s.z.number(),right:s.z.number(),bottom:s.z.number()});s.z.object({one:yr,two:yr,root:To});const On=(r,e,t=0,n=0,i)=>{const a={one:{...Gn},two:{...Gn},root:i??Oo};if(typeof r=="number"){if(typeof e!="number")throw new Error("Box constructor called with invalid arguments");return a.one={x:r,y:e},a.two={x:a.one.x+t,y:a.one.y+n},a}return"one"in r&&"two"in r&&"root"in r?{...r,root:i??r.root}:("getBoundingClientRect"in r&&(r=r.getBoundingClientRect()),"left"in r?(a.one={x:r.left,y:r.top},a.two={x:r.right,y:r.bottom},a):(a.one=r,e==null?a.two={x:a.one.x+t,y:a.one.y+n}:typeof e=="number"?a.two={x:a.one.x+e,y:a.one.y+t}:"width"in e?a.two={x:a.one.x+e.width,y:a.one.y+e.height}:"signedWidth"in e?a.two={x:a.one.x+e.signedWidth,y:a.one.y+e.signedHeight}:a.two=e,a))},Zr=r=>{const e=On(r);return{lower:e.one.x,upper:e.two.x}},Ur=r=>{const e=On(r);return{lower:e.one.y,upper:e.two.y}},No=r=>typeof r!="object"||r==null?!1:"one"in r&&"two"in r&&"root"in r;var So=Object.defineProperty,Io=(r,e,t)=>e in r?So(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,ge=(r,e,t)=>Io(r,typeof e!="symbol"?e+"":e,t);const ko=(r,e,t)=>e!==void 0&&rt?t:r;s.z.object({offset:Wn,scale:Wn});s.z.object({offset:s.z.number(),scale:s.z.number()});const $o=r=>(e,t,n,i)=>t==="dimension"?[e,n]:[e,i?n-r:n+r],Ao=r=>(e,t,n,i)=>[e,i?n/r:n*r],Ro=r=>(e,t,n)=>{if(e===null)return[r,n];const{lower:i,upper:a}=e,{lower:o,upper:l}=r,u=a-i,h=l-o;if(t==="dimension")return[r,n*(h/u)];const y=(n-i)*(h/u)+o;return[r,y]},xo=r=>(e,t,n)=>[r,n],Co=()=>(r,e,t)=>{if(r===null)throw new Error("cannot invert without bounds");if(e==="dimension")return[r,t];const{lower:n,upper:i}=r;return[r,i-(t-n)]},Po=r=>(e,t,n)=>{const{lower:i,upper:a}=r;return n=ko(n,i,a),[e,n]},an=class mt{constructor(){ge(this,"ops",[]),ge(this,"currBounds",null),ge(this,"currType",null),ge(this,"reversed",!1),this.ops=[]}static translate(e){return new mt().translate(e)}static magnify(e){return new mt().magnify(e)}static scale(e,t){return new mt().scale(e,t)}translate(e){const t=this.new(),n=$o(e);return n.type="translate",t.ops.push(n),t}magnify(e){const t=this.new(),n=Ao(e);return n.type="magnify",t.ops.push(n),t}scale(e,t){const n=xe(e,t),i=this.new(),a=Ro(n);return a.type="scale",i.ops.push(a),i}clamp(e,t){const n=xe(e,t),i=this.new(),a=Po(n);return a.type="clamp",i.ops.push(a),i}reBound(e,t){const n=xe(e,t),i=this.new(),a=xo(n);return a.type="re-bound",i.ops.push(a),i}invert(){const e=Co();e.type="invert";const t=this.new();return t.ops.push(e),t}pos(e){return this.exec("position",e)}dim(e){return this.exec("dimension",e)}new(){const e=new mt;return e.ops=this.ops.slice(),e.reversed=this.reversed,e}exec(e,t){return this.currBounds=null,this.ops.reduce(([n,i],a)=>a(n,e,i,this.reversed),[null,t])[1]}reverse(){const e=this.new();e.ops.reverse();const t=[];return e.ops.forEach((n,i)=>{if(n.type==="scale"||t.some(([o,l])=>i>=o&&i<=l))return;const a=e.ops.findIndex((o,l)=>o.type==="scale"&&l>i);a!==-1&&t.push([i,a])}),t.forEach(([n,i])=>{const a=e.ops.slice(n,i);a.unshift(e.ops[i]),e.ops.splice(n,i-n+1,...a)}),e.reversed=!e.reversed,e}get transform(){return{scale:this.dim(1),offset:this.pos(0)}}};ge(an,"IDENTITY",new an);let Vn=an;const Fn=class ye{constructor(e=new Vn,t=new Vn,n=null){ge(this,"x"),ge(this,"y"),ge(this,"currRoot"),this.x=e,this.y=t,this.currRoot=n}static translate(e,t){return new ye().translate(e,t)}static translateX(e){return new ye().translateX(e)}static translateY(e){return new ye().translateY(e)}static clamp(e){return new ye().clamp(e)}static magnify(e){return new ye().magnify(e)}static scale(e){return new ye().scale(e)}static reBound(e){return new ye().reBound(e)}translate(e,t){const n=Eo(e,t),i=this.copy();return i.x=this.x.translate(n.x),i.y=this.y.translate(n.y),i}translateX(e){const t=this.copy();return t.x=this.x.translate(e),t}translateY(e){const t=this.copy();return t.y=this.y.translate(e),t}magnify(e){const t=this.copy();return t.x=this.x.magnify(e.x),t.y=this.y.magnify(e.y),t}scale(e){const t=this.copy();if(No(e)){const n=this.currRoot;return t.currRoot=e.root,n!=null&&!zo(n,e.root)&&(n.x!==e.root.x&&(t.x=t.x.invert()),n.y!==e.root.y&&(t.y=t.y.invert())),t.x=t.x.scale(Zr(e)),t.y=t.y.scale(Ur(e)),t}return t.x=t.x.scale(e.width),t.y=t.y.scale(e.height),t}reBound(e){const t=this.copy();return t.x=this.x.reBound(Zr(e)),t.y=this.y.reBound(Ur(e)),t}clamp(e){const t=this.copy();return t.x=this.x.clamp(Zr(e)),t.y=this.y.clamp(Ur(e)),t}copy(){const e=new ye;return e.currRoot=this.currRoot,e.x=this.x,e.y=this.y,e}reverse(){const e=this.copy();return e.x=this.x.reverse(),e.y=this.y.reverse(),e}pos(e){return{x:this.x.pos(e.x),y:this.y.pos(e.y)}}dim(e){return{x:this.x.dim(e.x),y:this.y.dim(e.y)}}box(e){return On(this.pos(e.one),this.pos(e.two),0,0,this.currRoot??e.root)}get transform(){return{scale:this.dim({x:1,y:1}),offset:this.pos({x:0,y:0})}}};ge(Fn,"IDENTITY",new Fn);const Do=r=>r!=null&&typeof r=="object"&&"toString"in r,jo=(r,e=!1)=>{const t=Do(r)?"stringer":typeof r;let n;switch(t){case"string":n=(i,a)=>i.localeCompare(a);break;case"stringer":n=(i,a)=>i.toString().localeCompare(a.toString());break;case"number":n=(i,a)=>Number(i)-Number(a);break;case"bigint":n=(i,a)=>BigInt(i)-BigInt(a)>0n?1:-1;break;case"boolean":n=(i,a)=>Number(i)-Number(a);break;case"undefined":n=()=>0;break;default:return console.warn(`sortFunc: unknown type ${t}`),()=>-1}return e?Mo(n):n},Mo=r=>(e,t)=>r(t,e),Bo=s.z.object({signedWidth:s.z.number(),signedHeight:s.z.number()});s.z.union([Bs,Bo,yr,vr]);const Zo=s.z.bigint().or(s.z.string().transform(BigInt));var Uo=Object.defineProperty,Lo=(r,e,t)=>e in r?Uo(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,m=(r,e,t)=>Lo(r,typeof e!="symbol"?e+"":e,t);let _o=(r,e=21)=>(t=e)=>{let n="",i=t;for(;i--;)n+=r[Math.random()*r.length|0];return n};const Yo="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",qo=_o(Yo,11),Wo=s.z.enum(["static","dynamic"]),Ws=(r,e)=>{const t=new j(e);if(![L.DAY,L.HOUR,L.MINUTE,L.SECOND,L.MILLISECOND,L.MICROSECOND,L.NANOSECOND].some(i=>i.equals(t)))throw new Error("Invalid argument for remainder. Must be an even TimeSpan or Timestamp");const n=r.valueOf()%t.valueOf();return r instanceof j?new j(n):new L(n)},$=class T{constructor(e,t="UTC"){if(m(this,"value"),m(this,"encodeValue",!0),e==null)this.value=T.now().valueOf();else if(e instanceof Date)this.value=BigInt(e.getTime())*T.MILLISECOND.valueOf();else if(typeof e=="string")this.value=T.parseDateTimeString(e,t).valueOf();else if(Array.isArray(e))this.value=T.parseDate(e);else{let n=BigInt(0);e instanceof Number&&(e=e.valueOf()),t==="local"&&(n=T.utcOffset.valueOf()),typeof e=="number"&&(isFinite(e)?e=Math.trunc(e):(isNaN(e)&&(e=0),e===1/0?e=T.MAX:e=T.MIN)),this.value=BigInt(e.valueOf())+n}}static parseDate([e=1970,t=1,n=1]){const i=new Date(e,t-1,n,0,0,0,0);return new T(BigInt(i.getTime())*T.MILLISECOND.valueOf()).truncate(T.DAY).valueOf()}encode(){return this.value.toString()}valueOf(){return this.value}static parseTimeString(e,t="UTC"){const[n,i,a]=e.split(":");let o="00",l="00";a!=null&&([o,l]=a.split("."));let u=T.hours(parseInt(n??"00")).add(T.minutes(parseInt(i??"00"))).add(T.seconds(parseInt(o??"00"))).add(T.milliseconds(parseInt(l??"00")));return t==="local"&&(u=u.add(T.utcOffset)),u.valueOf()}static parseDateTimeString(e,t="UTC"){if(!e.includes("/")&&!e.includes("-"))return T.parseTimeString(e,t);const n=new Date(e);return e.includes(":")||n.setUTCHours(0,0,0,0),new T(BigInt(n.getTime())*T.MILLISECOND.valueOf(),t).valueOf()}fString(e="ISO",t="UTC"){switch(e){case"ISODate":return this.toISOString(t).slice(0,10);case"ISOTime":return this.toISOString(t).slice(11,23);case"time":return this.timeString(!1,t);case"preciseTime":return this.timeString(!0,t);case"date":return this.dateString();case"preciseDate":return`${this.dateString()} ${this.timeString(!0,t)}`;case"dateTime":return`${this.dateString()} ${this.timeString(!1,t)}`;default:return this.toISOString(t)}}toISOString(e="UTC"){return e==="UTC"?this.date().toISOString():this.sub(T.utcOffset).date().toISOString()}timeString(e=!1,t="UTC"){const n=this.toISOString(t);return e?n.slice(11,23):n.slice(11,19)}dateString(){const e=this.date(),t=e.toLocaleString("default",{month:"short"}),n=e.toLocaleString("default",{day:"numeric"});return`${t} ${n}`}static get utcOffset(){return new L(BigInt(new Date().getTimezoneOffset())*T.MINUTE.valueOf())}static since(e){return new T().span(e)}date(){return new Date(this.milliseconds())}equals(e){return this.valueOf()===new T(e).valueOf()}span(e){return this.range(e).span}range(e){return new zn(this,e).makeValid()}spanRange(e){return this.range(this.add(e)).makeValid()}get isZero(){return this.valueOf()===BigInt(0)}after(e){return this.valueOf()>new T(e).valueOf()}afterEq(e){return this.valueOf()>=new T(e).valueOf()}before(e){return this.valueOf()new $(r.value)),s.z.string().transform(r=>new $(BigInt(r))),s.z.instanceof(Number).transform(r=>new $(r)),s.z.number().transform(r=>new $(r)),s.z.instanceof($)]));let j=$;const A=class z{constructor(e){m(this,"value"),m(this,"encodeValue",!0),typeof e=="number"&&(e=Math.trunc(e.valueOf())),this.value=BigInt(e.valueOf())}static fromSeconds(e){return e instanceof z?e:e instanceof Jn?e.period:e instanceof j?new z(e):["number","bigint"].includes(typeof e)?z.seconds(e):new z(e)}static fromMilliseconds(e){return e instanceof z?e:e instanceof Jn?e.period:e instanceof j?new z(e):["number","bigint"].includes(typeof e)?z.milliseconds(e):new z(e)}encode(){return this.value.toString()}valueOf(){return this.value}lessThan(e){return this.valueOf()new z(e).valueOf()}lessThanOrEqual(e){return this.valueOf()<=new z(e).valueOf()}greaterThanOrEqual(e){return this.valueOf()>=new z(e).valueOf()}remainder(e){return Ws(this,e)}truncate(e){return new z(BigInt(Math.trunc(Number(this.valueOf()/e.valueOf())))*e.valueOf())}toString(){const e=this.truncate(z.DAY),t=this.truncate(z.HOUR),n=this.truncate(z.MINUTE),i=this.truncate(z.SECOND),a=this.truncate(z.MILLISECOND),o=this.truncate(z.MICROSECOND),l=this.truncate(z.NANOSECOND),u=e,h=t.sub(e),y=n.sub(t),d=i.sub(n),P=a.sub(i),D=o.sub(a),ee=l.sub(o);let B="";return u.isZero||(B+=`${u.days}d `),h.isZero||(B+=`${h.hours}h `),y.isZero||(B+=`${y.minutes}m `),d.isZero||(B+=`${d.seconds}s `),P.isZero||(B+=`${P.milliseconds}ms `),D.isZero||(B+=`${D.microseconds}µs `),ee.isZero||(B+=`${ee.nanoseconds}ns`),B.trim()}get days(){return Number(this.valueOf())/Number(z.DAY.valueOf())}get hours(){return Number(this.valueOf())/Number(z.HOUR.valueOf())}get minutes(){return Number(this.valueOf())/Number(z.MINUTE.valueOf())}get seconds(){return Number(this.valueOf())/Number(z.SECOND.valueOf())}get milliseconds(){return Number(this.valueOf())/Number(z.MILLISECOND.valueOf())}get microseconds(){return Number(this.valueOf())/Number(z.MICROSECOND.valueOf())}get nanoseconds(){return Number(this.valueOf())}get isZero(){return this.valueOf()===BigInt(0)}equals(e){return this.valueOf()===new z(e).valueOf()}add(e){return new z(this.valueOf()+new z(e).valueOf())}sub(e){return new z(this.valueOf()-new z(e).valueOf())}static nanoseconds(e=1){return new z(e)}static microseconds(e=1){return z.nanoseconds(Ze(e,1e3))}static milliseconds(e=1){return z.microseconds(Ze(e,1e3))}static seconds(e=1){return z.milliseconds(Ze(e,1e3))}static minutes(e=1){return z.seconds(Ze(e,60))}static hours(e){return z.minutes(Ze(e,60))}static days(e){return z.hours(Ze(e,24))}};m(A,"NANOSECOND",A.nanoseconds(1)),m(A,"MICROSECOND",A.microseconds(1)),m(A,"MILLISECOND",A.milliseconds(1)),m(A,"SECOND",A.seconds(1)),m(A,"MINUTE",A.minutes(1)),m(A,"HOUR",A.hours(1)),m(A,"DAY",A.days(1)),m(A,"MAX",new A((1n<<63n)-1n)),m(A,"MIN",new A(0)),m(A,"ZERO",new A(0)),m(A,"z",s.z.union([s.z.object({value:s.z.bigint()}).transform(r=>new A(r.value)),s.z.string().transform(r=>new A(BigInt(r))),s.z.instanceof(Number).transform(r=>new A(r)),s.z.number().transform(r=>new A(r)),s.z.instanceof(A)]));let L=A;const wt=class rr extends Number{constructor(e){e instanceof Number?super(e.valueOf()):super(e)}toString(){return`${this.valueOf()} Hz`}equals(e){return this.valueOf()===new rr(e).valueOf()}get period(){return L.seconds(1/this.valueOf())}sampleCount(e){return new L(e).seconds*this.valueOf()}byteCount(e,t){return this.sampleCount(e)*new J(t).valueOf()}span(e){return L.seconds(e/this.valueOf())}byteSpan(e,t){return this.span(e.valueOf()/t.valueOf())}static hz(e){return new rr(e)}static khz(e){return rr.hz(e*1e3)}};m(wt,"z",s.z.union([s.z.number().transform(r=>new wt(r)),s.z.instanceof(Number).transform(r=>new wt(r)),s.z.instanceof(wt)]));let Jn=wt;const Y=class extends Number{constructor(e){e instanceof Number?super(e.valueOf()):super(e)}length(e){return e.valueOf()/this.valueOf()}size(e){return new on(e*this.valueOf())}};m(Y,"UNKNOWN",new Y(0)),m(Y,"BIT128",new Y(16)),m(Y,"BIT64",new Y(8)),m(Y,"BIT32",new Y(4)),m(Y,"BIT16",new Y(2)),m(Y,"BIT8",new Y(1)),m(Y,"z",s.z.union([s.z.number().transform(r=>new Y(r)),s.z.instanceof(Number).transform(r=>new Y(r)),s.z.instanceof(Y)]));let J=Y;const ie=class nr{constructor(e,t){m(this,"start"),m(this,"end"),typeof e=="object"&&"start"in e?(this.start=new j(e.start),this.end=new j(e.end)):(this.start=new j(e),this.end=new j(t))}get span(){return new L(this.end.valueOf()-this.start.valueOf())}get isValid(){return this.start.valueOf()<=this.end.valueOf()}makeValid(){return this.isValid?this:this.swap()}get isZero(){return this.span.isZero}get numeric(){return{start:Number(this.start.valueOf()),end:Number(this.end.valueOf())}}swap(){return new nr(this.end,this.start)}equals(e){return this.start.equals(e.start)&&this.end.equals(e.end)}toString(){return`${this.start.toString()} - ${this.end.toString()}`}toPrettyString(){return`${this.start.fString("preciseDate")} - ${this.span.toString()}`}overlapsWith(e,t=L.ZERO){e=e.makeValid();const n=this.makeValid();if(this.equals(e))return!0;if(e.end.equals(n.start)||n.end.equals(e.start))return!1;const i=j.max(n.start,e.start),a=j.min(n.end,e.end);return a.before(i)?!1:new L(a.sub(i)).greaterThanOrEqual(t)}roughlyEquals(e,t){let n=this.start.sub(e.start).valueOf(),i=this.end.sub(e.end).valueOf();return n<0&&(n=-n),i<0&&(i=-i),n<=t.valueOf()&&i<=t.valueOf()}contains(e){return e instanceof nr?this.contains(e.start)&&this.contains(e.end):this.start.beforeEq(e)&&this.end.after(e)}boundBy(e){const t=new nr(this.start,this.end);return e.start.after(this.start)&&(t.start=e.start),e.start.after(this.end)&&(t.end=e.start),e.end.before(this.end)&&(t.end=e.end),e.end.before(this.start)&&(t.start=e.end),t}};m(ie,"MAX",new ie(j.MIN,j.MAX)),m(ie,"MIN",new ie(j.MAX,j.MIN)),m(ie,"ZERO",new ie(j.ZERO,j.ZERO)),m(ie,"z",s.z.union([s.z.object({start:j.z,end:j.z}).transform(r=>new ie(r.start,r.end)),s.z.instanceof(ie)]));let zn=ie;const g=class ae extends String{constructor(e){if(e instanceof ae||typeof e=="string"||typeof e.valueOf()=="string"){super(e.valueOf());return}const t=ae.ARRAY_CONSTRUCTOR_DATA_TYPES.get(e.constructor.name);if(t!=null){super(t.valueOf());return}throw super(ae.UNKNOWN.valueOf()),new Error(`unable to find data type for ${e.toString()}`)}get Array(){const e=ae.ARRAY_CONSTRUCTORS.get(this.toString());if(e==null)throw new Error(`unable to find array constructor for ${this.valueOf()}`);return e}equals(e){return this.valueOf()===e.valueOf()}matches(...e){return e.some(t=>this.equals(t))}toString(){return this.valueOf()}get isVariable(){return this.equals(ae.JSON)||this.equals(ae.STRING)}get isNumeric(){return!this.isVariable&&!this.equals(ae.UUID)}get isInteger(){return this.toString().startsWith("int")}get isFloat(){return this.toString().startsWith("float")}get density(){const e=ae.DENSITIES.get(this.toString());if(e==null)throw new Error(`unable to find density for ${this.valueOf()}`);return e}canSafelyCastTo(e){return this.equals(e)?!0:this.isVariable&&!e.isVariable||!this.isVariable&&e.isVariable?!1:this.isFloat&&e.isInteger||this.isInteger&&e.isFloat?this.density.valueOf()e.equals(this))}};m(g,"UNKNOWN",new g("unknown")),m(g,"FLOAT64",new g("float64")),m(g,"FLOAT32",new g("float32")),m(g,"INT64",new g("int64")),m(g,"INT32",new g("int32")),m(g,"INT16",new g("int16")),m(g,"INT8",new g("int8")),m(g,"UINT64",new g("uint64")),m(g,"UINT32",new g("uint32")),m(g,"UINT16",new g("uint16")),m(g,"UINT8",new g("uint8")),m(g,"BOOLEAN",g.UINT8),m(g,"TIMESTAMP",new g("timestamp")),m(g,"UUID",new g("uuid")),m(g,"STRING",new g("string")),m(g,"JSON",new g("json")),m(g,"ARRAY_CONSTRUCTORS",new Map([[g.UINT8.toString(),Uint8Array],[g.UINT16.toString(),Uint16Array],[g.UINT32.toString(),Uint32Array],[g.UINT64.toString(),BigUint64Array],[g.FLOAT32.toString(),Float32Array],[g.FLOAT64.toString(),Float64Array],[g.INT8.toString(),Int8Array],[g.INT16.toString(),Int16Array],[g.INT32.toString(),Int32Array],[g.INT64.toString(),BigInt64Array],[g.TIMESTAMP.toString(),BigInt64Array],[g.STRING.toString(),Uint8Array],[g.JSON.toString(),Uint8Array],[g.UUID.toString(),Uint8Array]])),m(g,"ARRAY_CONSTRUCTOR_DATA_TYPES",new Map([[Uint8Array.name,g.UINT8],[Uint16Array.name,g.UINT16],[Uint32Array.name,g.UINT32],[BigUint64Array.name,g.UINT64],[Float32Array.name,g.FLOAT32],[Float64Array.name,g.FLOAT64],[Int8Array.name,g.INT8],[Int16Array.name,g.INT16],[Int32Array.name,g.INT32],[BigInt64Array.name,g.INT64]])),m(g,"DENSITIES",new Map([[g.UINT8.toString(),J.BIT8],[g.UINT16.toString(),J.BIT16],[g.UINT32.toString(),J.BIT32],[g.UINT64.toString(),J.BIT64],[g.FLOAT32.toString(),J.BIT32],[g.FLOAT64.toString(),J.BIT64],[g.INT8.toString(),J.BIT8],[g.INT16.toString(),J.BIT16],[g.INT32.toString(),J.BIT32],[g.INT64.toString(),J.BIT64],[g.TIMESTAMP.toString(),J.BIT64],[g.STRING.toString(),J.UNKNOWN],[g.JSON.toString(),J.UNKNOWN],[g.UUID.toString(),J.BIT128]])),m(g,"ALL",[g.UNKNOWN,g.FLOAT64,g.FLOAT32,g.INT64,g.INT32,g.INT16,g.INT8,g.UINT64,g.UINT32,g.UINT16,g.UINT8,g.TIMESTAMP,g.UUID,g.STRING,g.JSON]),m(g,"BIG_INT_TYPES",[g.INT64,g.UINT64,g.TIMESTAMP]),m(g,"z",s.z.union([s.z.string().transform(r=>new g(r)),s.z.instanceof(g)]));let R=g;const G=class Z extends Number{constructor(e){super(e.valueOf())}largerThan(e){return this.valueOf()>e.valueOf()}smallerThan(e){return this.valueOf()new G(r)),s.z.instanceof(G)]));let on=G;s.z.union([s.z.instanceof(Uint8Array),s.z.instanceof(Uint16Array),s.z.instanceof(Uint32Array),s.z.instanceof(BigUint64Array),s.z.instanceof(Float32Array),s.z.instanceof(Float64Array),s.z.instanceof(Int8Array),s.z.instanceof(Int16Array),s.z.instanceof(Int32Array),s.z.instanceof(BigInt64Array)]);const Gs=r=>{const e=typeof r;return e==="string"||e==="number"||e==="boolean"||e==="bigint"||r instanceof j||r instanceof L||r instanceof Date},Go=(r,e,t,n=0)=>r.usesBigInt&&!e.usesBigInt?Number(t)-Number(n):!r.usesBigInt&&e.usesBigInt?BigInt(t.valueOf())-BigInt(n.valueOf()):vt(t,-n).valueOf(),Vo=r=>r==null?!1:Array.isArray(r)||r instanceof ArrayBuffer||ArrayBuffer.isView(r)&&!(r instanceof DataView)||r instanceof Ko?!0:Gs(r),ve=-1,Fo=s.z.string().transform(r=>new Uint8Array(atob(r).split("").map(e=>e.charCodeAt(0))).buffer),Jo=s.z.union([s.z.null(),s.z.undefined()]).transform(()=>new Uint8Array().buffer),cn=10,bt=class oe{constructor(e){m(this,"key",""),m(this,"isSynnaxSeries",!0),m(this,"dataType"),m(this,"sampleOffset"),m(this,"gl"),m(this,"_data"),m(this,"_timeRange"),m(this,"alignment",0n),m(this,"_cachedMin"),m(this,"_cachedMax"),m(this,"writePos",ve),m(this,"_refCount",0),m(this,"_cachedLength"),m(this,"_cachedIndexes"),Vo(e)&&(e={data:e});const{dataType:t,timeRange:n,sampleOffset:i=0,glBufferUsage:a="static",alignment:o=0n,key:l=qo()}=e,u=e.data??[];if(u instanceof oe||typeof u=="object"&&"isSynnaxSeries"in u&&u.isSynnaxSeries===!0){const d=u;this.key=d.key,this.dataType=d.dataType,this.sampleOffset=d.sampleOffset,this.gl=d.gl,this._data=d._data,this._timeRange=d._timeRange,this.alignment=d.alignment,this._cachedMin=d._cachedMin,this._cachedMax=d._cachedMax,this.writePos=d.writePos,this._refCount=d._refCount,this._cachedLength=d._cachedLength;return}const h=Gs(u),y=Array.isArray(u);if(t!=null)this.dataType=new R(t);else{if(u instanceof ArrayBuffer)throw new Error("cannot infer data type from an ArrayBuffer instance when constructing a Series. Please provide a data type.");if(y||h){let d=u;if(!h){if(u.length===0)throw new Error("cannot infer data type from a zero length JS array when constructing a Series. Please provide a data type.");d=u[0]}if(typeof d=="string")this.dataType=R.STRING;else if(typeof d=="number")this.dataType=R.FLOAT64;else if(typeof d=="bigint")this.dataType=R.INT64;else if(typeof d=="boolean")this.dataType=R.BOOLEAN;else if(d instanceof j||d instanceof Date||d instanceof j)this.dataType=R.TIMESTAMP;else if(typeof d=="object")this.dataType=R.JSON;else throw new Error(`cannot infer data type of ${typeof d} when constructing a Series from a JS array`)}else this.dataType=new R(u)}if(!y&&!h)this._data=u;else{let d=h?[u]:u;const P=d[0];(P instanceof j||P instanceof Date||P instanceof L)&&(d=d.map(D=>new j(D).valueOf())),this.dataType.equals(R.STRING)?(this._cachedLength=d.length,this._data=new TextEncoder().encode(`${d.join(` `)} `)):this.dataType.equals(R.JSON)?(this._cachedLength=d.length,this._data=new TextEncoder().encode(`${d.map(D=>tr.encodeString(D)).join(` `)} `)):this._data=new this.dataType.Array(d).buffer}this.key=l,this.alignment=o,this.sampleOffset=i??0,this._timeRange=n,this.gl={control:null,buffer:null,prevBuffer:0,bufferUsage:a}}static alloc({capacity:e,dataType:t,...n}){if(e===0)throw new Error("[Series] - cannot allocate an array of length 0");const i=new new R(t).Array(e),a=new oe({data:i.buffer,dataType:t,...n});return a.writePos=0,a}static generateTimestamps(e,t,n){const i=n.spanRange(t.span(e)),a=new BigInt64Array(e);for(let o=0;otr.encodeString(i)).join(` `)} `);return new oe({data:n,dataType:R.JSON,timeRange:t})}acquire(e){this._refCount++,e!=null&&this.updateGLBuffer(e)}release(){if(this._refCount--,this._refCount===0&&this.gl.control!=null)this.maybeGarbageCollectGLBuffer(this.gl.control);else if(this._refCount<0)throw new Error("cannot release an array with a negative reference count")}write(e){if(!e.dataType.equals(this.dataType))throw new Error("buffer must be of the same type as this array");return this.dataType.isVariable?this.writeVariable(e):this.writeFixed(e)}writeVariable(e){if(this.writePos===ve)return 0;const t=this.byteCapacity.valueOf()-this.writePos,n=e.subBytes(0,t);return this.writeToUnderlyingData(n),this.writePos+=n.byteLength.valueOf(),this._cachedLength!=null&&(this._cachedLength+=n.length,this.calculateCachedLength()),n.length}writeFixed(e){if(this.writePos===ve)return 0;const t=this.capacity-this.writePos,n=e.sub(0,t);return this.writeToUnderlyingData(n),this._cachedLength=void 0,this.maybeRecomputeMinMax(n),this.writePos+=n.length,n.length}writeToUnderlyingData(e){this.underlyingData.set(e.data,this.writePos)}get buffer(){return this._data instanceof ArrayBuffer||this._data instanceof SharedArrayBuffer?this._data:this._data.buffer}get underlyingData(){return new this.dataType.Array(this._data)}get data(){return this.writePos===ve?this.underlyingData:new this.dataType.Array(this._data,0,this.writePos)}toStrings(){if(!this.dataType.matches(R.STRING,R.UUID))throw new Error("cannot convert non-string series to strings");return new TextDecoder().decode(this.underlyingData).split(` `).slice(0,-1)}toUUIDs(){if(!this.dataType.equals(R.UUID))throw new Error("cannot convert non-uuid series to uuids");const e=R.UUID.density.valueOf(),t=Array(this.length);for(let n=0;no.toString(16).padStart(2,"0")).join("").replace(/(.{8})(.{4})(.{4})(.{4})(.{12})/,"$1-$2-$3-$4-$5");t[n]=a}return t}parseJSON(e){if(!this.dataType.equals(R.JSON))throw new Error("cannot convert non-string series to strings");return new TextDecoder().decode(this.underlyingData).split(` `).slice(0,-1).map(t=>e.parse(tr.decodeString(t)))}get timeRange(){if(this._timeRange==null)throw new Error("time range not set on series");return this._timeRange}get byteCapacity(){return new on(this.underlyingData.byteLength)}get capacity(){return this.dataType.isVariable?this.byteCapacity.valueOf():this.dataType.density.length(this.byteCapacity)}get byteLength(){return this.writePos===ve?this.byteCapacity:this.dataType.isVariable?new on(this.writePos):this.dataType.density.size(this.writePos)}get length(){return this._cachedLength!=null?this._cachedLength:this.dataType.isVariable?this.calculateCachedLength():this.writePos===ve?this.data.length:this.writePos}calculateCachedLength(){if(!this.dataType.isVariable)throw new Error("cannot calculate length of a non-variable length data type");let e=0;const t=[0];return this.data.forEach((n,i)=>{n===cn&&(e++,t.push(i+1))}),this._cachedIndexes=t,this._cachedLength=e,e}convert(e,t=0){if(this.dataType.equals(e))return this;const n=new e.Array(this.length);for(let i=0;it>n?t:n)}else{const e=this.data;this._cachedMax=e.reduce((t,n)=>t>n?t:n)}return this._cachedMax}get max(){if(this.dataType.isVariable)throw new Error("cannot calculate maximum on a variable length data type");return this.writePos===0?-1/0:(this._cachedMax??(this._cachedMax=this.calcRawMax()),vt(this._cachedMax,this.sampleOffset))}calcRawMin(){if(this.length===0)return 1/0;if(this.dataType.equals(R.TIMESTAMP))this._cachedMin=this.data[0];else if(this.dataType.usesBigInt){const e=this.data;this._cachedMin=e.reduce((t,n)=>ttthis._cachedMax&&(this._cachedMax=t)}}enrich(){this.max,this.min}get range(){return vt(this.max,-this.min)}atAlignment(e,t){const n=Number(e-this.alignment);if(n<0||n>=this.length){if(t===!0)throw new Error(`[series] - no value at index ${n}`);return}return this.at(n,t)}at(e,t){if(this.dataType.isVariable)return this.atVariable(e,t??!1);e<0&&(e=this.length+e);const n=this.data[e];if(n==null){if(t===!0)throw new Error(`[series] - no value at index ${e}`);return}return vt(n,this.sampleOffset)}atVariable(e,t){let n=0,i=0;if(this._cachedIndexes!=null)n=this._cachedIndexes[e],i=this._cachedIndexes[e+1]-1;else{e<0&&(e=this.length+e);for(let o=0;o=i||e>0){if(t)throw new Error(`[series] - no value at index ${e}`);return}}const a=this.data.slice(n,i);return this.dataType.equals(R.STRING)?new TextDecoder().decode(a):js(JSON.parse(new TextDecoder().decode(a)))}binarySearch(e){let t=0,n=this.length-1;const i=jo(e);for(;t<=n;){const a=Math.floor((t+n)/2),o=i(this.at(a,!0),e);if(o===0)return a;o<0?t=a+1:n=a-1}return t}updateGLBuffer(e){if(this.gl.control=e,!this.dataType.equals(R.FLOAT32))throw new Error("Only FLOAT32 arrays can be used in WebGL");const{buffer:t,bufferUsage:n,prevBuffer:i}=this.gl;if(t==null&&(this.gl.buffer=e.createBuffer()),this.writePos!==i)if(e.bindBuffer(e.ARRAY_BUFFER,this.gl.buffer),this.writePos!==ve){i===0&&e.bufferData(e.ARRAY_BUFFER,this.byteCapacity.valueOf(),e.STATIC_DRAW);const a=this.dataType.density.size(i).valueOf(),o=this.underlyingData.slice(this.gl.prevBuffer,this.writePos);e.bufferSubData(e.ARRAY_BUFFER,a,o.buffer),this.gl.prevBuffer=this.writePos}else e.bufferData(e.ARRAY_BUFFER,this.underlyingData,n==="static"?e.STATIC_DRAW:e.DYNAMIC_DRAW),this.gl.prevBuffer=ve}as(e){if(e==="string"){if(!this.dataType.equals(R.STRING))throw new Error(`cannot convert series of type ${this.dataType.toString()} to string`);return this}if(e==="number"){if(!this.dataType.isNumeric)throw new Error(`cannot convert series of type ${this.dataType.toString()} to number`);return this}if(e==="bigint"){if(!this.dataType.equals(R.INT64))throw new Error(`cannot convert series of type ${this.dataType.toString()} to bigint`);return this}throw new Error(`cannot convert series to ${e}`)}get digest(){var e;return{key:this.key,dataType:this.dataType.toString(),sampleOffset:this.sampleOffset,alignment:this.alignmentBounds,timeRange:(e=this._timeRange)==null?void 0:e.toString(),length:this.length,capacity:this.capacity}}get memInfo(){return{key:this.key,length:this.length,byteLength:this.byteLength,glBuffer:this.gl.buffer!=null}}get alignmentBounds(){return xe(this.alignment,this.alignment+BigInt(this.length))}maybeGarbageCollectGLBuffer(e){this.gl.buffer!=null&&(e.deleteBuffer(this.gl.buffer),this.gl.buffer=null,this.gl.prevBuffer=0,this.gl.control=null)}get glBuffer(){if(this.gl.buffer==null)throw new Error("gl buffer not initialized");return this.gl.prevBuffer!==this.writePos&&console.warn("buffer not updated"),this.gl.buffer}[Symbol.iterator](){if(this.dataType.isVariable){const e=new Ho(this);return this.dataType.equals(R.JSON)?new Xo(e):e}return new Qo(this)}slice(e,t){return this.sliceSub(!1,e,t)}sub(e,t){return this.sliceSub(!0,e,t)}subIterator(e,t){return new Kn(this,e,t??this.length)}subAlignmentIterator(e,t){return new Kn(this,Number(e-this.alignment),Number(t-this.alignment))}subBytes(e,t){if(e>=0&&(t==null||t>=this.byteLength.valueOf()))return this;const n=this.data.subarray(e,t);return new oe({data:n,dataType:this.dataType,timeRange:this._timeRange,sampleOffset:this.sampleOffset,glBufferUsage:this.gl.bufferUsage,alignment:this.alignment+BigInt(e)})}sliceSub(e,t,n){if(t<=0&&(n==null||n>=this.length))return this;let i;return e?i=this.data.subarray(t,n):i=this.data.slice(t,n),new oe({data:i,dataType:this.dataType,timeRange:this._timeRange,sampleOffset:this.sampleOffset,glBufferUsage:this.gl.bufferUsage,alignment:this.alignment+BigInt(t)})}reAlign(e){return new oe({data:this.buffer,dataType:this.dataType,timeRange:zn.ZERO,sampleOffset:this.sampleOffset,glBufferUsage:"static",alignment:e})}};m(bt,"crudeZ",s.z.object({timeRange:zn.z.optional(),dataType:R.z,alignment:Zo.optional(),data:s.z.union([Fo,Jo,s.z.instanceof(ArrayBuffer)]),glBufferUsage:Wo.optional().default("static").optional()})),m(bt,"z",bt.crudeZ.transform(r=>new bt(r)));let Ko=bt;class Kn{constructor(e,t,n){m(this,"series"),m(this,"end"),m(this,"index"),this.series=e;const i=xe(0,e.length);this.end=qn(i,n),this.index=qn(i,t)}next(){return this.index>=this.end?{done:!0,value:void 0}:{done:!1,value:this.series.at(this.index++,!0)}}[Symbol.iterator](){return this}}class Ho{constructor(e){if(m(this,"series"),m(this,"index"),m(this,"decoder"),!e.dataType.isVariable)throw new Error("cannot create a variable series iterator for a non-variable series");this.series=e,this.index=0,this.decoder=new TextDecoder}next(){const e=this.index,t=this.series.data;for(;this.index=this.series.length?{done:!0,value:void 0}:{done:!1,value:this.series.at(this.index++,!0)}}[(es=Symbol.iterator,Qn=Symbol.toStringTag,es)](){return this}}const vt=(r,e)=>typeof r=="bigint"&&typeof e=="bigint"||typeof r=="number"&&typeof e=="number"?r+e:e===0?r:r===0?e:Number(r)+Number(e);s.z.object({key:s.z.string(),value:s.z.string()});s.z.record(s.z.union([s.z.number(),s.z.string(),s.z.symbol()]),s.z.unknown());const Vs=()=>typeof process<"u"&&process.versions!=null&&process.versions.node!=null?"node":typeof window>"u"||window.document===void 0?"webworker":"browser",ec=Vs(),Fs=["MacOS","Windows","Linux","Docker"],tc=s.z.enum(Fs);let Lr;const rc=()=>{if(typeof window>"u")return;const r=window.navigator.userAgent.toLowerCase();if(r.includes("mac"))return"MacOS";if(r.includes("win"))return"Windows";if(r.includes("linux"))return"Linux"},nc=(r={})=>{const{force:e,default:t}=r;return e??Lr??(Lr=rc(),Lr??t)},Js=Object.freeze(Object.defineProperty({__proto__:null,OPERATING_SYSTEMS:Fs,RUNTIME:ec,detect:Vs,getOS:nc,osZ:tc},Symbol.toStringTag,{value:"Module"}));var sc=Object.defineProperty,ic=(r,e,t)=>e in r?sc(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,Tt=(r,e,t)=>ic(r,typeof e!="symbol"?e+"":e,t);const ac=(...r)=>r.map(Ks).join(""),Ks=r=>(r.endsWith("/")||(r+="/"),r.startsWith("/")&&(r=r.slice(1)),r),oc=r=>r.endsWith("/")?r.slice(0,-1):r,cc=(r,e="")=>r===null?"":`?${Object.entries(r).filter(([,t])=>t==null?!1:Array.isArray(t)?t.length>0:!0).map(([t,n])=>`${e}${t}=${n}`).join("&")}`,ln=class un{constructor({host:e,port:t,protocol:n="",pathPrefix:i=""}){Tt(this,"protocol"),Tt(this,"host"),Tt(this,"port"),Tt(this,"path"),this.protocol=n,this.host=e,this.port=t,this.path=Ks(i)}replace(e){return new un({host:e.host??this.host,port:e.port??this.port,protocol:e.protocol??this.protocol,pathPrefix:e.pathPrefix??this.path})}child(e){return new un({...this,pathPrefix:ac(this.path,e)})}toString(){return oc(`${this.protocol}://${this.host}:${this.port}/${this.path}`)}};Tt(ln,"UNKNOWN",new ln({host:"unknown",port:0}));let lc=ln;var uc=Object.defineProperty,hc=(r,e,t)=>e in r?uc(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,sr=(r,e,t)=>hc(r,typeof e!="symbol"?e+"":e,t);const Ue=class extends Number{};sr(Ue,"Absolute",255),sr(Ue,"Default",1),sr(Ue,"z",s.z.union([s.z.instanceof(Ue),s.z.number().int().min(0).max(255).transform(r=>new Ue(r)),s.z.instanceof(Number).transform(r=>new Ue(r))]));s.z.object({name:s.z.string(),key:s.z.string()});const Hs=class Ot extends Error{constructor(){super(Ot.MESSAGE)}matches(e){return typeof e=="string"?e.includes(Ot.MESSAGE):e instanceof Ot||e.message.includes(Ot.MESSAGE)}};sr(Hs,"MESSAGE","canceled");let dc=Hs;new dc;s.z.string().regex(/^\d+\.\d+\.\d+$/);const X=r=>e=>e!=null&&typeof e=="object"&&"type"in e&&typeof e.type=="string"?e.type.includes(r):e instanceof Error?e.message.includes(r):typeof e!="string"?!1:e.includes(r);class se extends Error{constructor(){super(...arguments),k(this,"discriminator","FreighterError"),k(this,"type","")}}const yc=r=>{if(r==null||typeof r!="object")return!1;const e=r;if(e.discriminator!=="FreighterError")return!1;if(!("type"in e))throw new Error(`Freighter error is missing its type property: ${JSON.stringify(e)}`);return!0},ts="unknown",rs="nil",fc="freighter",Zt=s.z.object({type:s.z.string(),data:s.z.string()});class gc{constructor(){k(this,"providers",[])}register(e){this.providers.push(e)}encode(e){if(e==null)return{type:rs,data:""};if(yc(e))for(const t of this.providers){const n=t.encode(e);if(n!=null)return n}return{type:ts,data:JSON.stringify(e)}}decode(e){if(e==null||e.type===rs)return null;if(e.type===ts)return new ns(e.data);for(const t of this.providers){const n=t.decode(e);if(n!=null)return n}return new ns(e.data)}}const Xs=new gc,Qs=({encode:r,decode:e})=>Xs.register({encode:r,decode:e}),En=r=>Xs.decode(r);class ns extends se{constructor(){super(...arguments),k(this,"type","unknown")}}const Tr="freighter.",ir=class ei extends se{constructor(){super("EOF"),k(this,"type",ei.TYPE)}};k(ir,"TYPE",`${Tr}eof`),k(ir,"matches",X(ir.TYPE));let Se=ir;const ar=class ti extends se{constructor(){super("StreamClosed"),k(this,"type",ti.TYPE)}};k(ar,"TYPE",`${Tr}stream_closed`),k(ar,"matches",X(ar.TYPE));let it=ar;const or=class ri extends se{constructor(e={}){const{message:t="Unreachable",url:n=lc.UNKNOWN}=e;super(t),k(this,"type",ri.TYPE),k(this,"url"),this.url=n}};k(or,"TYPE",`${Tr}unreachable`),k(or,"matches",X(or.TYPE));let Ce=or;const pc=r=>{if(!r.type.startsWith(fc))return null;if(Se.matches(r))return{type:Se.TYPE,data:"EOF"};if(it.matches(r))return{type:it.TYPE,data:"StreamClosed"};if(Ce.matches(r))return{type:Ce.TYPE,data:"Unreachable"};throw new Error(`Unknown error type: ${r.type}: ${r.message}`)},mc=r=>{if(!r.type.startsWith(Tr))return null;switch(r.type){case Se.TYPE:return new Se;case it.TYPE:return new it;case Ce.TYPE:return new Ce;default:throw new Error(`Unknown error type: ${r.data}`)}};Qs({encode:pc,decode:mc});let ni=class{constructor(){k(this,"middleware",[])}use(...e){this.middleware.push(...e)}async executeMiddleware(e,t){let n=0;const i=async a=>{if(n===this.middleware.length)return await t(a);const o=this.middleware[n];return n++,await o(a,i)};return await i(e)}};const si="Content-Type",ss=r=>{if(Js.RUNTIME!=="node")return fetch;const e=require("node-fetch");if(r==="http")return e;const t=require("https"),n=new t.Agent({rejectUnauthorized:!1});return async(i,a)=>await e(i,{...a,agent:n})};class wc extends ni{constructor(e,t,n=!1){return super(),k(this,"endpoint"),k(this,"encoder"),k(this,"fetch"),this.endpoint=e.replace({protocol:n?"https":"http"}),this.encoder=t,this.fetch=ss(this.endpoint.protocol),new Proxy(this,{get:(i,a,o)=>a==="endpoint"?this.endpoint:Reflect.get(i,a,o)})}get headers(){return{[si]:this.encoder.contentType}}async send(e,t,n,i){t=n==null?void 0:n.parse(t);let a=null;const o=this.endpoint.child(e),l={};l.method="POST",l.body=this.encoder.encode(t??{});const[,u]=await this.executeMiddleware({target:o.toString(),protocol:this.endpoint.protocol,params:{},role:"client"},async h=>{const y={...h,params:{}};l.headers={...this.headers,...h.params};let d;try{d=await ss(h.protocol)(h.target,l)}catch(D){let ee=D;return ee.message==="Load failed"&&(ee=new Ce({url:o})),[y,ee]}const P=await d.arrayBuffer();if(d!=null&&d.ok)return i!=null&&(a=this.encoder.decode(P,i)),[y,null];try{if(d.status!==400)return[y,new Error(d.statusText)];const D=this.encoder.decode(P,Zt),ee=En(D);return[y,ee]}catch(D){return[y,new Error(`[freighter] - failed to decode error: ${d.statusText}: ${D.message}`)]}});return[a,u]}}const w=async(r,e,t,n,i)=>{const[a,o]=await r.send(e,t,n,i);if(o!=null)throw o;return a},bc=()=>Js.RUNTIME!=="node"?r=>new WebSocket(r):r=>new(require("ws")).WebSocket(r,{rejectUnauthorized:!1}),vc=s.z.object({type:s.z.union([s.z.literal("data"),s.z.literal("close")]),payload:s.z.unknown().optional(),error:s.z.optional(Zt)});class Tc{constructor(e,t,n,i){k(this,"encoder"),k(this,"reqSchema"),k(this,"resSchema"),k(this,"ws"),k(this,"serverClosed"),k(this,"sendClosed"),k(this,"receiveDataQueue",[]),k(this,"receiveCallbacksQueue",[]),this.encoder=t,this.reqSchema=n,this.resSchema=i,this.ws=e,this.sendClosed=!1,this.serverClosed=null,this.listenForMessages()}send(e){if(this.serverClosed!=null)return new Se;if(this.sendClosed)throw new it;return this.ws.send(this.encoder.encode({type:"data",payload:e})),null}async receive(){if(this.serverClosed!=null)return[null,this.serverClosed];const e=await this.receiveMsg();if(e.type==="close"){if(e.error==null)throw new Error("Message error must be defined");return this.serverClosed=En(e.error),[null,this.serverClosed]}return[this.resSchema.parse(e.payload),null]}received(){return this.receiveDataQueue.length!==0}closeSend(){if(this.sendClosed||this.serverClosed!=null)return;const e={type:"close"};try{this.ws.send(this.encoder.encode(e))}finally{this.sendClosed=!0}}async receiveMsg(){return this.receiveDataQueue.shift()??await new Promise((t,n)=>this.receiveCallbacksQueue.push({resolve:t,reject:n}))}addMessage(e){const t=this.receiveCallbacksQueue.shift();t!=null?t.resolve(e):this.receiveDataQueue.push(e)}listenForMessages(){this.ws.onmessage=e=>this.addMessage(this.encoder.decode(e.data,vc)),this.ws.onclose=e=>this.addMessage({type:"close",error:{type:Sc(e)?Se.TYPE:it.TYPE,data:""}})}}const Oc="freighterctx",zc=1e3,Ec=1001,Nc=[zc,Ec],Sc=r=>Nc.includes(r.code),ii=class ai extends ni{constructor(e,t,n=!1){super(),k(this,"baseUrl"),k(this,"encoder"),this.baseUrl=e.replace({protocol:n?"wss":"ws"}),this.encoder=t}async stream(e,t,n){const i=bc();let a;const[,o]=await this.executeMiddleware({target:e,protocol:"websocket",params:{},role:"client"},async l=>{const u=i(this.buildURL(e,l)),h={...l,params:{}};u.binaryType=ai.MESSAGE_TYPE;const y=await this.wrapSocket(u,t,n);return y instanceof Error?[h,y]:(a=y,[h,null])});if(o!=null)throw o;return a}buildURL(e,t){const n=cc({[si]:this.encoder.contentType,...t.params},Oc);return this.baseUrl.child(e).toString()+n}async wrapSocket(e,t,n){return await new Promise(i=>{e.onopen=()=>{i(new Tc(e,this.encoder,t,n))},e.onerror=a=>{const o=a;i(new Error(o.message))}})}};k(ii,"MESSAGE_TYPE","arraybuffer");let Ic=ii;const fr=s.z.union([s.z.literal("all"),s.z.literal("create"),s.z.literal("delete"),s.z.literal("retrieve"),s.z.literal("update")]),kc="all",$c="create",Ac="delete",Rc="retrieve",xc="update",Cc=r=>{const e=r.replace(/_[a-z]/g,t=>t[1].toUpperCase());return e.length>1&&e[0]===e[0].toUpperCase()&&e[1]===e[1].toUpperCase()||e.length===0?e:e[0].toLowerCase()+e.slice(1)},oi=r=>{const e=(t,n=hn)=>{if(typeof t=="string")return r(t);if(Array.isArray(t))return t.map(o=>e(o,n));if(!_r(t))return t;n=jc(n);const i={},a=t;return Object.keys(a).forEach(o=>{let l=a[o];const u=r(o);n.recursive&&(_r(l)?as(l,n.keepTypesOnRecursion)||(l=e(l,n)):n.recursiveInArray&&is(l)&&(l=[...l].map(h=>{let y=h;return _r(h)?as(y,n.keepTypesOnRecursion)||(y=e(h,n)):is(h)&&(y=e({key:h},n).key),y}))),i[u]=l}),i};return e},ci=oi(Cc),Pc=r=>r.replace(/([a-z0-9])([A-Z])/g,(e,t,n)=>`${t}_${n.toLowerCase()}`),Dc=oi(Pc),hn={recursive:!0,recursiveInArray:!0,keepTypesOnRecursion:[Number,String,Uint8Array]},jc=(r=hn)=>(r.recursive==null?r=hn:r.recursiveInArray??(r.recursiveInArray=!1),r),is=r=>r!=null&&Array.isArray(r),_r=r=>r!=null&&typeof r=="object"&&!Array.isArray(r),as=(r,e)=>(e||[]).some(t=>r instanceof t),Nn=r=>r!=null&&typeof r=="object"&&!Array.isArray(r);var Mc=Object.defineProperty,Bc=(r,e,t)=>e in r?Mc(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,At=(r,e,t)=>Bc(r,typeof e!="symbol"?e+"":e,t);let li=class{constructor(){At(this,"contentType","application/json"),At(this,"decoder"),At(this,"encoder"),this.decoder=new TextDecoder,this.encoder=new TextEncoder}encode(e){return this.encoder.encode(this.encodeString(e)).buffer}decode(e,t){return this.decodeString(this.decoder.decode(e),t)}decodeString(e,t){const n=JSON.parse(e),i=ci(n);return t!=null?t.parse(i):i}encodeString(e){const t=Dc(e);return JSON.stringify(t,(n,i)=>ArrayBuffer.isView(i)?Array.from(i):Nn(i)&&"encode_value"in i?typeof i.value=="bigint"?i.value.toString():i.value:typeof i=="bigint"?i.toString():i)}static registerCustomType(){}},ui=class{constructor(){At(this,"contentType","text/csv")}encode(e){const t=this.encodeString(e);return new TextEncoder().encode(t).buffer}decode(e,t){const n=new TextDecoder().decode(e);return this.decodeString(n,t)}encodeString(e){if(!Array.isArray(e)||e.length===0||!Nn(e[0]))throw new Error("Payload must be an array of objects");const t=Object.keys(e[0]),n=[t.join(",")];return e.forEach(i=>{const a=t.map(o=>JSON.stringify(i[o]??""));n.push(a.join(","))}),n.join(` `)}decodeString(e,t){const[n,...i]=e.trim().split(` `).map(l=>l.trim());if(n.length===0)return t!=null?t.parse({}):{};const a=n.split(",").map(l=>l.trim()),o={};return a.forEach(l=>{o[l]=[]}),i.forEach(l=>{const u=l.split(",").map(h=>h.trim());a.forEach((h,y)=>{const d=this.parseValue(u[y]);d!=null&&o[h].push(d)})}),t!=null?t.parse(o):o}parseValue(e){if(e==null||e.length===0)return null;const t=Number(e);return isNaN(t)?e.startsWith('"')&&e.endsWith('"')?e.slice(1,-1):e:t}static registerCustomType(){}},hi=class{constructor(){At(this,"contentType","text/plain")}encode(e){return new TextEncoder().encode(e).buffer}decode(e,t){const n=new TextDecoder().decode(e);return t!=null?t.parse(n):n}};const st=new li,Zc=new ui,Uc=new hi,Lc=[st],ht=Object.freeze(Object.defineProperty({__proto__:null,CSVCodec:ui,CSV_CODEC:Zc,ENCODERS:Lc,JSONCodec:li,JSON_CODEC:st,TEXT_CODEC:Uc,TextCodec:hi},Symbol.toStringTag,{value:"Module"})),Or=s.z.tuple([s.z.number(),s.z.number()]);s.z.tuple([s.z.bigint(),s.z.bigint()]);const di=s.z.object({width:s.z.number(),height:s.z.number()}),_c=s.z.object({signedWidth:s.z.number(),signedHeight:s.z.number()}),Yc=["width","height"];s.z.enum(Yc);const qc=["start","center","end"],Wc=["signedWidth","signedHeight"];s.z.enum(Wc);const gr=s.z.object({x:s.z.number(),y:s.z.number()}),Gc=s.z.object({clientX:s.z.number(),clientY:s.z.number()}),Vc=["x","y"],yi=s.z.enum(Vc),fi=["top","right","bottom","left"];s.z.enum(fi);const Fc=["left","right"],gi=s.z.enum(Fc),Jc=["top","bottom"],pi=s.z.enum(Jc),mi=["center"],os=s.z.enum(mi),Kc=[...fi,...mi],wi=s.z.enum(Kc);s.z.enum(qc);const Hc=["first","last"];s.z.enum(Hc);const Xc=s.z.object({lower:s.z.number(),upper:s.z.number()}),Qc=s.z.object({lower:s.z.bigint(),upper:s.z.bigint()});s.z.union([Xc,Or]);s.z.union([Qc,Or]);s.z.union([yi,wi]);s.z.union([yi,wi,s.z.instanceof(String)]);const dt=r=>typeof r=="bigint"||r instanceof BigInt,Yr=(r,e)=>dt(r)?r.valueOf()-BigInt(e.valueOf().valueOf()):r.valueOf()-Number(e.valueOf()),el=(r,e)=>dt(r)?r.valueOf()+BigInt(e.valueOf().valueOf()):r+Number(e.valueOf()),cs=(r,e)=>dt(r)?r===BigInt(e.valueOf().valueOf()):r===Number(e.valueOf()),tl=(r,e)=>dt(r)?r.valueOf()dt(r)||r instanceof BigInt?r.valueOf()<0n?-r:r:r.valueOf()<0?-r:r,Le=(r,e)=>dt(r)?r.valueOf()*BigInt(e.valueOf()):r.valueOf()*Number(e.valueOf()),K=(r,e)=>{const t={};if(typeof r=="number"||typeof r=="bigint")e!=null?(t.lower=r,t.upper=e):(t.lower=typeof r=="bigint"?0n:0,t.upper=r);else if(Array.isArray(r)){if(r.length!==2)throw new Error("bounds: expected array of length 2");[t.lower,t.upper]=r}else return ls(r);return ls(t)},ls=r=>r.lower>r.upper?{lower:r.upper,upper:r.lower}:r,us=(r,e)=>{const t=K(r);return e=t.upper?t.upper-(typeof t.upper=="number"?1:1n):e},Qt=(r,e)=>{const t=K(r);if(typeof e=="number"||typeof e=="bigint")return e>=t.lower&&e=t.lower&&n.upper<=t.upper},nl=(r,e,t)=>{const n=r.map(l=>K(l)),i=t>0?1:t<0?-1:0;if(i===0)return e;let a=t,o=e;for(;cs(a,0)===!1;){const l=n.findIndex(u=>i>0?o>=u.lower&&ou.lower&&o<=u.upper);if(l!==-1){const u=n[l];let h;if(i>0?h=Yr(u.upper,o):h=Yr(o,u.lower),h>0){const y=tl(rl(a),h);if(o=el(o,i>0?y:-y),a=Yr(a,i>0?y:-y),cs(a,0))return o;continue}}if(i>0){const u=n.filter(h=>h.lower>o);if(u.length>0)o=u[0].lower;else return o}else{const u=n.filter(h=>h.upper0)o=u[u.length-1].upper;else return o}}return o},sl=(r,e,t)=>{const n=r.map(o=>K(o));if(e===t)return typeof e=="bigint"?0n:0;const i=ei.lower?o.lower:i.lower,u=o.upperr.x===e.x&&r.y===e.y,hs=s.z.union([s.z.number(),gr,Or,di,_c,Gc]),cl=(r,e)=>{if(typeof r=="string"){if(e===void 0)throw new Error("The y coordinate must be given.");return r==="x"?{x:e,y:0}:{x:0,y:e}}return typeof r=="number"?{x:r,y:e??r}:Array.isArray(r)?{x:r[0],y:r[1]}:"signedWidth"in r?{x:r.signedWidth,y:r.signedHeight}:"clientX"in r?{x:r.clientX,y:r.clientY}:"width"in r?{x:r.width,y:r.height}:{x:r.x,y:r.y}},ds=Object.freeze({x:0,y:0}),er=s.z.union([s.z.number(),s.z.string()]);s.z.object({top:er,left:er,width:er,height:er});s.z.object({left:s.z.number(),top:s.z.number(),right:s.z.number(),bottom:s.z.number()});s.z.object({one:gr,two:gr,root:il});const Sn=(r,e,t=0,n=0,i)=>{const a={one:{...ds},two:{...ds},root:i??al};if(typeof r=="number"){if(typeof e!="number")throw new Error("Box constructor called with invalid arguments");return a.one={x:r,y:e},a.two={x:a.one.x+t,y:a.one.y+n},a}return"one"in r&&"two"in r&&"root"in r?{...r,root:i??r.root}:("getBoundingClientRect"in r&&(r=r.getBoundingClientRect()),"left"in r?(a.one={x:r.left,y:r.top},a.two={x:r.right,y:r.bottom},a):(a.one=r,e==null?a.two={x:a.one.x+t,y:a.one.y+n}:typeof e=="number"?a.two={x:a.one.x+e,y:a.one.y+t}:"width"in e?a.two={x:a.one.x+e.width,y:a.one.y+e.height}:"signedWidth"in e?a.two={x:a.one.x+e.signedWidth,y:a.one.y+e.signedHeight}:a.two=e,a))},qr=r=>{const e=Sn(r);return{lower:e.one.x,upper:e.two.x}},Wr=r=>{const e=Sn(r);return{lower:e.one.y,upper:e.two.y}},ll=r=>typeof r!="object"||r==null?!1:"one"in r&&"two"in r&&"root"in r;var ul=Object.defineProperty,hl=(r,e,t)=>e in r?ul(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,pe=(r,e,t)=>hl(r,typeof e!="symbol"?e+"":e,t);const dl=(r,e,t)=>e!==void 0&&rt?t:r;s.z.object({offset:hs,scale:hs});s.z.object({offset:s.z.number(),scale:s.z.number()});const yl=r=>(e,t,n,i)=>t==="dimension"?[e,n]:[e,i?n-r:n+r],fl=r=>(e,t,n,i)=>[e,i?n/r:n*r],gl=r=>(e,t,n)=>{if(e===null)return[r,n];const{lower:i,upper:a}=e,{lower:o,upper:l}=r,u=a-i,h=l-o;if(t==="dimension")return[r,n*(h/u)];const y=(n-i)*(h/u)+o;return[r,y]},pl=r=>(e,t,n)=>[r,n],ml=()=>(r,e,t)=>{if(r===null)throw new Error("cannot invert without bounds");if(e==="dimension")return[r,t];const{lower:n,upper:i}=r;return[r,i-(t-n)]},wl=r=>(e,t,n)=>{const{lower:i,upper:a}=r;return n=dl(n,i,a),[e,n]},dn=class zt{constructor(){pe(this,"ops",[]),pe(this,"currBounds",null),pe(this,"currType",null),pe(this,"reversed",!1),this.ops=[]}static translate(e){return new zt().translate(e)}static magnify(e){return new zt().magnify(e)}static scale(e,t){return new zt().scale(e,t)}translate(e){const t=this.new(),n=yl(e);return n.type="translate",t.ops.push(n),t}magnify(e){const t=this.new(),n=fl(e);return n.type="magnify",t.ops.push(n),t}scale(e,t){const n=K(e,t),i=this.new(),a=gl(n);return a.type="scale",i.ops.push(a),i}clamp(e,t){const n=K(e,t),i=this.new(),a=wl(n);return a.type="clamp",i.ops.push(a),i}reBound(e,t){const n=K(e,t),i=this.new(),a=pl(n);return a.type="re-bound",i.ops.push(a),i}invert(){const e=ml();e.type="invert";const t=this.new();return t.ops.push(e),t}pos(e){return this.exec("position",e)}dim(e){return this.exec("dimension",e)}new(){const e=new zt;return e.ops=this.ops.slice(),e.reversed=this.reversed,e}exec(e,t){return this.currBounds=null,this.ops.reduce(([n,i],a)=>a(n,e,i,this.reversed),[null,t])[1]}reverse(){const e=this.new();e.ops.reverse();const t=[];return e.ops.forEach((n,i)=>{if(n.type==="scale"||t.some(([o,l])=>i>=o&&i<=l))return;const a=e.ops.findIndex((o,l)=>o.type==="scale"&&l>i);a!==-1&&t.push([i,a])}),t.forEach(([n,i])=>{const a=e.ops.slice(n,i);a.unshift(e.ops[i]),e.ops.splice(n,i-n+1,...a)}),e.reversed=!e.reversed,e}get transform(){return{scale:this.dim(1),offset:this.pos(0)}}};pe(dn,"IDENTITY",new dn);let ys=dn;const fs=class fe{constructor(e=new ys,t=new ys,n=null){pe(this,"x"),pe(this,"y"),pe(this,"currRoot"),this.x=e,this.y=t,this.currRoot=n}static translate(e,t){return new fe().translate(e,t)}static translateX(e){return new fe().translateX(e)}static translateY(e){return new fe().translateY(e)}static clamp(e){return new fe().clamp(e)}static magnify(e){return new fe().magnify(e)}static scale(e){return new fe().scale(e)}static reBound(e){return new fe().reBound(e)}translate(e,t){const n=cl(e,t),i=this.copy();return i.x=this.x.translate(n.x),i.y=this.y.translate(n.y),i}translateX(e){const t=this.copy();return t.x=this.x.translate(e),t}translateY(e){const t=this.copy();return t.y=this.y.translate(e),t}magnify(e){const t=this.copy();return t.x=this.x.magnify(e.x),t.y=this.y.magnify(e.y),t}scale(e){const t=this.copy();if(ll(e)){const n=this.currRoot;return t.currRoot=e.root,n!=null&&!ol(n,e.root)&&(n.x!==e.root.x&&(t.x=t.x.invert()),n.y!==e.root.y&&(t.y=t.y.invert())),t.x=t.x.scale(qr(e)),t.y=t.y.scale(Wr(e)),t}return t.x=t.x.scale(e.width),t.y=t.y.scale(e.height),t}reBound(e){const t=this.copy();return t.x=this.x.reBound(qr(e)),t.y=this.y.reBound(Wr(e)),t}clamp(e){const t=this.copy();return t.x=this.x.clamp(qr(e)),t.y=this.y.clamp(Wr(e)),t}copy(){const e=new fe;return e.currRoot=this.currRoot,e.x=this.x,e.y=this.y,e}reverse(){const e=this.copy();return e.x=this.x.reverse(),e.y=this.y.reverse(),e}pos(e){return{x:this.x.pos(e.x),y:this.y.pos(e.y)}}dim(e){return{x:this.x.dim(e.x),y:this.y.dim(e.y)}}box(e){return Sn(this.pos(e.one),this.pos(e.two),0,0,this.currRoot??e.root)}get transform(){return{scale:this.dim({x:1,y:1}),offset:this.pos({x:0,y:0})}}};pe(fs,"IDENTITY",new fs);const gs=r=>[...new Set(r)],bl=r=>r!=null&&typeof r=="object"&&"toString"in r,vl=(r,e=!1)=>{const t=bl(r)?"stringer":typeof r;let n;switch(t){case"string":n=(i,a)=>i.localeCompare(a);break;case"stringer":n=(i,a)=>i.toString().localeCompare(a.toString());break;case"number":n=(i,a)=>Number(i)-Number(a);break;case"bigint":n=(i,a)=>BigInt(i)-BigInt(a)>0n?1:-1;break;case"boolean":n=(i,a)=>Number(i)-Number(a);break;case"undefined":n=()=>0;break;default:return console.warn(`sortFunc: unknown type ${t}`),()=>-1}return e?Tl(n):n},Tl=r=>(e,t)=>r(t,e),zr=0,Gr=-1,Vr=1,Ol=r=>rr>zr,El=r=>r===zr,Nl=(r,e)=>{let t=null;return e===0?r:(...n)=>{t!==null&&(clearTimeout(t),t=null),t=setTimeout(()=>r(...n),e)}},Sl=s.z.object({signedWidth:s.z.number(),signedHeight:s.z.number()});s.z.union([di,Sl,gr,Or]);const Il=s.z.bigint().or(s.z.string().transform(BigInt));var kl=Object.defineProperty,$l=(r,e,t)=>e in r?kl(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,f=(r,e,t)=>$l(r,typeof e!="symbol"?e+"":e,t);let Al=(r,e=21)=>(t=e)=>{let n="",i=t;for(;i--;)n+=r[Math.random()*r.length|0];return n};const Rl="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",bi=Al(Rl,11),xl=Object.freeze(Object.defineProperty({__proto__:null,id:bi},Symbol.toStringTag,{value:"Module"})),Cl=s.z.enum(["static","dynamic"]),vi=(r,e)=>{const t=new S(e);if(![I.DAY,I.HOUR,I.MINUTE,I.SECOND,I.MILLISECOND,I.MICROSECOND,I.NANOSECOND].some(i=>i.equals(t)))throw new Error("Invalid argument for remainder. Must be an even TimeSpan or Timestamp");const n=r.valueOf()%t.valueOf();return r instanceof S?new S(n):new I(n)},x=class O{constructor(e,t="UTC"){if(f(this,"value"),f(this,"encodeValue",!0),e==null)this.value=O.now().valueOf();else if(e instanceof Date)this.value=BigInt(e.getTime())*O.MILLISECOND.valueOf();else if(typeof e=="string")this.value=O.parseDateTimeString(e,t).valueOf();else if(Array.isArray(e))this.value=O.parseDate(e);else{let n=BigInt(0);e instanceof Number&&(e=e.valueOf()),t==="local"&&(n=O.utcOffset.valueOf()),typeof e=="number"&&(isFinite(e)?e=Math.trunc(e):(isNaN(e)&&(e=0),e===1/0?e=O.MAX:e=O.MIN)),this.value=BigInt(e.valueOf())+n}}static parseDate([e=1970,t=1,n=1]){const i=new Date(e,t-1,n,0,0,0,0);return new O(BigInt(i.getTime())*O.MILLISECOND.valueOf()).truncate(O.DAY).valueOf()}encode(){return this.value.toString()}valueOf(){return this.value}static parseTimeString(e,t="UTC"){const[n,i,a]=e.split(":");let o="00",l="00";a!=null&&([o,l]=a.split("."));let u=O.hours(parseInt(n??"00")).add(O.minutes(parseInt(i??"00"))).add(O.seconds(parseInt(o??"00"))).add(O.milliseconds(parseInt(l??"00")));return t==="local"&&(u=u.add(O.utcOffset)),u.valueOf()}static parseDateTimeString(e,t="UTC"){if(!e.includes("/")&&!e.includes("-"))return O.parseTimeString(e,t);const n=new Date(e);return e.includes(":")||n.setUTCHours(0,0,0,0),new O(BigInt(n.getTime())*O.MILLISECOND.valueOf(),t).valueOf()}fString(e="ISO",t="UTC"){switch(e){case"ISODate":return this.toISOString(t).slice(0,10);case"ISOTime":return this.toISOString(t).slice(11,23);case"time":return this.timeString(!1,t);case"preciseTime":return this.timeString(!0,t);case"date":return this.dateString();case"preciseDate":return`${this.dateString()} ${this.timeString(!0,t)}`;case"dateTime":return`${this.dateString()} ${this.timeString(!1,t)}`;default:return this.toISOString(t)}}toISOString(e="UTC"){return e==="UTC"?this.date().toISOString():this.sub(O.utcOffset).date().toISOString()}timeString(e=!1,t="UTC"){const n=this.toISOString(t);return e?n.slice(11,23):n.slice(11,19)}dateString(){const e=this.date(),t=e.toLocaleString("default",{month:"short"}),n=e.toLocaleString("default",{day:"numeric"});return`${t} ${n}`}static get utcOffset(){return new I(BigInt(new Date().getTimezoneOffset())*O.MINUTE.valueOf())}static since(e){return new O().span(e)}date(){return new Date(this.milliseconds())}equals(e){return this.valueOf()===new O(e).valueOf()}span(e){return this.range(e).span}range(e){return new W(this,e).makeValid()}spanRange(e){return this.range(this.add(e)).makeValid()}get isZero(){return this.valueOf()===BigInt(0)}after(e){return this.valueOf()>new O(e).valueOf()}afterEq(e){return this.valueOf()>=new O(e).valueOf()}before(e){return this.valueOf()new x(r.value)),s.z.string().transform(r=>new x(BigInt(r))),s.z.instanceof(Number).transform(r=>new x(r)),s.z.number().transform(r=>new x(r)),s.z.instanceof(x)]));let S=x;const C=class E{constructor(e){f(this,"value"),f(this,"encodeValue",!0),typeof e=="number"&&(e=Math.trunc(e.valueOf())),this.value=BigInt(e.valueOf())}static fromSeconds(e){return e instanceof E?e:e instanceof at?e.period:e instanceof S?new E(e):["number","bigint"].includes(typeof e)?E.seconds(e):new E(e)}static fromMilliseconds(e){return e instanceof E?e:e instanceof at?e.period:e instanceof S?new E(e):["number","bigint"].includes(typeof e)?E.milliseconds(e):new E(e)}encode(){return this.value.toString()}valueOf(){return this.value}lessThan(e){return this.valueOf()new E(e).valueOf()}lessThanOrEqual(e){return this.valueOf()<=new E(e).valueOf()}greaterThanOrEqual(e){return this.valueOf()>=new E(e).valueOf()}remainder(e){return vi(this,e)}truncate(e){return new E(BigInt(Math.trunc(Number(this.valueOf()/e.valueOf())))*e.valueOf())}toString(){const e=this.truncate(E.DAY),t=this.truncate(E.HOUR),n=this.truncate(E.MINUTE),i=this.truncate(E.SECOND),a=this.truncate(E.MILLISECOND),o=this.truncate(E.MICROSECOND),l=this.truncate(E.NANOSECOND),u=e,h=t.sub(e),y=n.sub(t),d=i.sub(n),P=a.sub(i),D=o.sub(a),ee=l.sub(o);let B="";return u.isZero||(B+=`${u.days}d `),h.isZero||(B+=`${h.hours}h `),y.isZero||(B+=`${y.minutes}m `),d.isZero||(B+=`${d.seconds}s `),P.isZero||(B+=`${P.milliseconds}ms `),D.isZero||(B+=`${D.microseconds}µs `),ee.isZero||(B+=`${ee.nanoseconds}ns`),B.trim()}get days(){return Number(this.valueOf())/Number(E.DAY.valueOf())}get hours(){return Number(this.valueOf())/Number(E.HOUR.valueOf())}get minutes(){return Number(this.valueOf())/Number(E.MINUTE.valueOf())}get seconds(){return Number(this.valueOf())/Number(E.SECOND.valueOf())}get milliseconds(){return Number(this.valueOf())/Number(E.MILLISECOND.valueOf())}get microseconds(){return Number(this.valueOf())/Number(E.MICROSECOND.valueOf())}get nanoseconds(){return Number(this.valueOf())}get isZero(){return this.valueOf()===BigInt(0)}equals(e){return this.valueOf()===new E(e).valueOf()}add(e){return new E(this.valueOf()+new E(e).valueOf())}sub(e){return new E(this.valueOf()-new E(e).valueOf())}static nanoseconds(e=1){return new E(e)}static microseconds(e=1){return E.nanoseconds(Le(e,1e3))}static milliseconds(e=1){return E.microseconds(Le(e,1e3))}static seconds(e=1){return E.milliseconds(Le(e,1e3))}static minutes(e=1){return E.seconds(Le(e,60))}static hours(e){return E.minutes(Le(e,60))}static days(e){return E.hours(Le(e,24))}};f(C,"NANOSECOND",C.nanoseconds(1)),f(C,"MICROSECOND",C.microseconds(1)),f(C,"MILLISECOND",C.milliseconds(1)),f(C,"SECOND",C.seconds(1)),f(C,"MINUTE",C.minutes(1)),f(C,"HOUR",C.hours(1)),f(C,"DAY",C.days(1)),f(C,"MAX",new C((1n<<63n)-1n)),f(C,"MIN",new C(0)),f(C,"ZERO",new C(0)),f(C,"z",s.z.union([s.z.object({value:s.z.bigint()}).transform(r=>new C(r.value)),s.z.string().transform(r=>new C(BigInt(r))),s.z.instanceof(Number).transform(r=>new C(r)),s.z.number().transform(r=>new C(r)),s.z.instanceof(C)]));let I=C;const Et=class cr extends Number{constructor(e){e instanceof Number?super(e.valueOf()):super(e)}toString(){return`${this.valueOf()} Hz`}equals(e){return this.valueOf()===new cr(e).valueOf()}get period(){return I.seconds(1/this.valueOf())}sampleCount(e){return new I(e).seconds*this.valueOf()}byteCount(e,t){return this.sampleCount(e)*new F(t).valueOf()}span(e){return I.seconds(e/this.valueOf())}byteSpan(e,t){return this.span(e.valueOf()/t.valueOf())}static hz(e){return new cr(e)}static khz(e){return cr.hz(e*1e3)}};f(Et,"z",s.z.union([s.z.number().transform(r=>new Et(r)),s.z.instanceof(Number).transform(r=>new Et(r)),s.z.instanceof(Et)]));let at=Et;const q=class extends Number{constructor(e){e instanceof Number?super(e.valueOf()):super(e)}length(e){return e.valueOf()/this.valueOf()}size(e){return new ot(e*this.valueOf())}};f(q,"UNKNOWN",new q(0)),f(q,"BIT128",new q(16)),f(q,"BIT64",new q(8)),f(q,"BIT32",new q(4)),f(q,"BIT16",new q(2)),f(q,"BIT8",new q(1)),f(q,"z",s.z.union([s.z.number().transform(r=>new q(r)),s.z.instanceof(Number).transform(r=>new q(r)),s.z.instanceof(q)]));let F=q;const ce=class lr{constructor(e,t){f(this,"start"),f(this,"end"),typeof e=="object"&&"start"in e?(this.start=new S(e.start),this.end=new S(e.end)):(this.start=new S(e),this.end=new S(t))}get span(){return new I(this.end.valueOf()-this.start.valueOf())}get isValid(){return this.start.valueOf()<=this.end.valueOf()}makeValid(){return this.isValid?this:this.swap()}get isZero(){return this.span.isZero}get numeric(){return{start:Number(this.start.valueOf()),end:Number(this.end.valueOf())}}swap(){return new lr(this.end,this.start)}equals(e){return this.start.equals(e.start)&&this.end.equals(e.end)}toString(){return`${this.start.toString()} - ${this.end.toString()}`}toPrettyString(){return`${this.start.fString("preciseDate")} - ${this.span.toString()}`}overlapsWith(e,t=I.ZERO){e=e.makeValid();const n=this.makeValid();if(this.equals(e))return!0;if(e.end.equals(n.start)||n.end.equals(e.start))return!1;const i=S.max(n.start,e.start),a=S.min(n.end,e.end);return a.before(i)?!1:new I(a.sub(i)).greaterThanOrEqual(t)}roughlyEquals(e,t){let n=this.start.sub(e.start).valueOf(),i=this.end.sub(e.end).valueOf();return n<0&&(n=-n),i<0&&(i=-i),n<=t.valueOf()&&i<=t.valueOf()}contains(e){return e instanceof lr?this.contains(e.start)&&this.contains(e.end):this.start.beforeEq(e)&&this.end.after(e)}boundBy(e){const t=new lr(this.start,this.end);return e.start.after(this.start)&&(t.start=e.start),e.start.after(this.end)&&(t.end=e.start),e.end.before(this.end)&&(t.end=e.end),e.end.before(this.start)&&(t.start=e.end),t}};f(ce,"MAX",new ce(S.MIN,S.MAX)),f(ce,"MIN",new ce(S.MAX,S.MIN)),f(ce,"ZERO",new ce(S.ZERO,S.ZERO)),f(ce,"z",s.z.union([s.z.object({start:S.z,end:S.z}).transform(r=>new ce(r.start,r.end)),s.z.instanceof(ce)]));let W=ce;const p=class le extends String{constructor(e){if(e instanceof le||typeof e=="string"||typeof e.valueOf()=="string"){super(e.valueOf());return}const t=le.ARRAY_CONSTRUCTOR_DATA_TYPES.get(e.constructor.name);if(t!=null){super(t.valueOf());return}throw super(le.UNKNOWN.valueOf()),new Error(`unable to find data type for ${e.toString()}`)}get Array(){const e=le.ARRAY_CONSTRUCTORS.get(this.toString());if(e==null)throw new Error(`unable to find array constructor for ${this.valueOf()}`);return e}equals(e){return this.valueOf()===e.valueOf()}matches(...e){return e.some(t=>this.equals(t))}toString(){return this.valueOf()}get isVariable(){return this.equals(le.JSON)||this.equals(le.STRING)}get isNumeric(){return!this.isVariable&&!this.equals(le.UUID)}get isInteger(){return this.toString().startsWith("int")}get isFloat(){return this.toString().startsWith("float")}get density(){const e=le.DENSITIES.get(this.toString());if(e==null)throw new Error(`unable to find density for ${this.valueOf()}`);return e}canSafelyCastTo(e){return this.equals(e)?!0:this.isVariable&&!e.isVariable||!this.isVariable&&e.isVariable?!1:this.isFloat&&e.isInteger||this.isInteger&&e.isFloat?this.density.valueOf()e.equals(this))}};f(p,"UNKNOWN",new p("unknown")),f(p,"FLOAT64",new p("float64")),f(p,"FLOAT32",new p("float32")),f(p,"INT64",new p("int64")),f(p,"INT32",new p("int32")),f(p,"INT16",new p("int16")),f(p,"INT8",new p("int8")),f(p,"UINT64",new p("uint64")),f(p,"UINT32",new p("uint32")),f(p,"UINT16",new p("uint16")),f(p,"UINT8",new p("uint8")),f(p,"BOOLEAN",p.UINT8),f(p,"TIMESTAMP",new p("timestamp")),f(p,"UUID",new p("uuid")),f(p,"STRING",new p("string")),f(p,"JSON",new p("json")),f(p,"ARRAY_CONSTRUCTORS",new Map([[p.UINT8.toString(),Uint8Array],[p.UINT16.toString(),Uint16Array],[p.UINT32.toString(),Uint32Array],[p.UINT64.toString(),BigUint64Array],[p.FLOAT32.toString(),Float32Array],[p.FLOAT64.toString(),Float64Array],[p.INT8.toString(),Int8Array],[p.INT16.toString(),Int16Array],[p.INT32.toString(),Int32Array],[p.INT64.toString(),BigInt64Array],[p.TIMESTAMP.toString(),BigInt64Array],[p.STRING.toString(),Uint8Array],[p.JSON.toString(),Uint8Array],[p.UUID.toString(),Uint8Array]])),f(p,"ARRAY_CONSTRUCTOR_DATA_TYPES",new Map([[Uint8Array.name,p.UINT8],[Uint16Array.name,p.UINT16],[Uint32Array.name,p.UINT32],[BigUint64Array.name,p.UINT64],[Float32Array.name,p.FLOAT32],[Float64Array.name,p.FLOAT64],[Int8Array.name,p.INT8],[Int16Array.name,p.INT16],[Int32Array.name,p.INT32],[BigInt64Array.name,p.INT64]])),f(p,"DENSITIES",new Map([[p.UINT8.toString(),F.BIT8],[p.UINT16.toString(),F.BIT16],[p.UINT32.toString(),F.BIT32],[p.UINT64.toString(),F.BIT64],[p.FLOAT32.toString(),F.BIT32],[p.FLOAT64.toString(),F.BIT64],[p.INT8.toString(),F.BIT8],[p.INT16.toString(),F.BIT16],[p.INT32.toString(),F.BIT32],[p.INT64.toString(),F.BIT64],[p.TIMESTAMP.toString(),F.BIT64],[p.STRING.toString(),F.UNKNOWN],[p.JSON.toString(),F.UNKNOWN],[p.UUID.toString(),F.BIT128]])),f(p,"ALL",[p.UNKNOWN,p.FLOAT64,p.FLOAT32,p.INT64,p.INT32,p.INT16,p.INT8,p.UINT64,p.UINT32,p.UINT16,p.UINT8,p.TIMESTAMP,p.UUID,p.STRING,p.JSON]),f(p,"BIG_INT_TYPES",[p.INT64,p.UINT64,p.TIMESTAMP]),f(p,"z",s.z.union([s.z.string().transform(r=>new p(r)),s.z.instanceof(p)]));let N=p;const V=class U extends Number{constructor(e){super(e.valueOf())}largerThan(e){return this.valueOf()>e.valueOf()}smallerThan(e){return this.valueOf()new V(r)),s.z.instanceof(V)]));let ot=V;s.z.union([s.z.instanceof(Uint8Array),s.z.instanceof(Uint16Array),s.z.instanceof(Uint32Array),s.z.instanceof(BigUint64Array),s.z.instanceof(Float32Array),s.z.instanceof(Float64Array),s.z.instanceof(Int8Array),s.z.instanceof(Int16Array),s.z.instanceof(Int32Array),s.z.instanceof(BigInt64Array)]);const Ti=r=>{const e=typeof r;return e==="string"||e==="number"||e==="boolean"||e==="bigint"||r instanceof S||r instanceof I||r instanceof Date},Pl=(r,e,t,n=0)=>r.usesBigInt&&!e.usesBigInt?Number(t)-Number(n):!r.usesBigInt&&e.usesBigInt?BigInt(t.valueOf())-BigInt(n.valueOf()):St(t,-n).valueOf(),Dl=r=>r==null?!1:Array.isArray(r)||r instanceof ArrayBuffer||ArrayBuffer.isView(r)&&!(r instanceof DataView)||r instanceof ze?!0:Ti(r),Te=-1,yn={[Symbol.iterator]:()=>yn,next:()=>({done:!0,value:void 0})},jl=s.z.string().transform(r=>new Uint8Array(atob(r).split("").map(e=>e.charCodeAt(0))).buffer),Ml=s.z.union([s.z.null(),s.z.undefined()]).transform(()=>new Uint8Array().buffer),fn=10,Nt=class ue{constructor(e){f(this,"key",""),f(this,"isSynnaxSeries",!0),f(this,"dataType"),f(this,"sampleOffset"),f(this,"gl"),f(this,"_data"),f(this,"_timeRange"),f(this,"alignment",0n),f(this,"_cachedMin"),f(this,"_cachedMax"),f(this,"writePos",Te),f(this,"_refCount",0),f(this,"_cachedLength"),f(this,"_cachedIndexes"),Dl(e)&&(e={data:e});const{dataType:t,timeRange:n,sampleOffset:i=0,glBufferUsage:a="static",alignment:o=0n,key:l=bi()}=e,u=e.data??[];if(u instanceof ue||typeof u=="object"&&"isSynnaxSeries"in u&&u.isSynnaxSeries===!0){const d=u;this.key=d.key,this.dataType=d.dataType,this.sampleOffset=d.sampleOffset,this.gl=d.gl,this._data=d._data,this._timeRange=d._timeRange,this.alignment=d.alignment,this._cachedMin=d._cachedMin,this._cachedMax=d._cachedMax,this.writePos=d.writePos,this._refCount=d._refCount,this._cachedLength=d._cachedLength;return}const h=Ti(u),y=Array.isArray(u);if(t!=null)this.dataType=new N(t);else{if(u instanceof ArrayBuffer)throw new Error("cannot infer data type from an ArrayBuffer instance when constructing a Series. Please provide a data type.");if(y||h){let d=u;if(!h){if(u.length===0)throw new Error("cannot infer data type from a zero length JS array when constructing a Series. Please provide a data type.");d=u[0]}if(typeof d=="string")this.dataType=N.STRING;else if(typeof d=="number")this.dataType=N.FLOAT64;else if(typeof d=="bigint")this.dataType=N.INT64;else if(typeof d=="boolean")this.dataType=N.BOOLEAN;else if(d instanceof S||d instanceof Date||d instanceof S)this.dataType=N.TIMESTAMP;else if(typeof d=="object")this.dataType=N.JSON;else throw new Error(`cannot infer data type of ${typeof d} when constructing a Series from a JS array`)}else this.dataType=new N(u)}if(!y&&!h)this._data=u;else{let d=h?[u]:u;const P=d[0];(P instanceof S||P instanceof Date||P instanceof I)&&(d=d.map(D=>new S(D).valueOf())),this.dataType.equals(N.STRING)?(this._cachedLength=d.length,this._data=new TextEncoder().encode(`${d.join(` `)} `)):this.dataType.equals(N.JSON)?(this._cachedLength=d.length,this._data=new TextEncoder().encode(`${d.map(D=>st.encodeString(D)).join(` `)} `)):this._data=new this.dataType.Array(d).buffer}this.key=l,this.alignment=o,this.sampleOffset=i??0,this._timeRange=n,this.gl={control:null,buffer:null,prevBuffer:0,bufferUsage:a}}static alloc({capacity:e,dataType:t,...n}){if(e===0)throw new Error("[Series] - cannot allocate an array of length 0");const i=new new N(t).Array(e),a=new ue({data:i.buffer,dataType:t,...n});return a.writePos=0,a}static generateTimestamps(e,t,n){const i=n.spanRange(t.span(e)),a=new BigInt64Array(e);for(let o=0;ost.encodeString(i)).join(` `)} `);return new ue({data:n,dataType:N.JSON,timeRange:t})}acquire(e){this._refCount++,e!=null&&this.updateGLBuffer(e)}release(){if(this._refCount--,this._refCount===0&&this.gl.control!=null)this.maybeGarbageCollectGLBuffer(this.gl.control);else if(this._refCount<0)throw new Error("cannot release an array with a negative reference count")}write(e){if(!e.dataType.equals(this.dataType))throw new Error("buffer must be of the same type as this array");return this.dataType.isVariable?this.writeVariable(e):this.writeFixed(e)}writeVariable(e){if(this.writePos===Te)return 0;const t=this.byteCapacity.valueOf()-this.writePos,n=e.subBytes(0,t);return this.writeToUnderlyingData(n),this.writePos+=n.byteLength.valueOf(),this._cachedLength!=null&&(this._cachedLength+=n.length,this.calculateCachedLength()),n.length}writeFixed(e){if(this.writePos===Te)return 0;const t=this.capacity-this.writePos,n=e.sub(0,t);return this.writeToUnderlyingData(n),this._cachedLength=void 0,this.maybeRecomputeMinMax(n),this.writePos+=n.length,n.length}writeToUnderlyingData(e){this.underlyingData.set(e.data,this.writePos)}get buffer(){return this._data instanceof ArrayBuffer||this._data instanceof SharedArrayBuffer?this._data:this._data.buffer}get underlyingData(){return new this.dataType.Array(this._data)}get data(){return this.writePos===Te?this.underlyingData:new this.dataType.Array(this._data,0,this.writePos)}toStrings(){if(!this.dataType.matches(N.STRING,N.UUID))throw new Error("cannot convert non-string series to strings");return new TextDecoder().decode(this.underlyingData).split(` `).slice(0,-1)}toUUIDs(){if(!this.dataType.equals(N.UUID))throw new Error("cannot convert non-uuid series to uuids");const e=N.UUID.density.valueOf(),t=Array(this.length);for(let n=0;no.toString(16).padStart(2,"0")).join("").replace(/(.{8})(.{4})(.{4})(.{4})(.{12})/,"$1-$2-$3-$4-$5");t[n]=a}return t}parseJSON(e){if(!this.dataType.equals(N.JSON))throw new Error("cannot convert non-string series to strings");return new TextDecoder().decode(this.underlyingData).split(` `).slice(0,-1).map(t=>e.parse(st.decodeString(t)))}get timeRange(){if(this._timeRange==null)throw new Error("time range not set on series");return this._timeRange}get byteCapacity(){return new ot(this.underlyingData.byteLength)}get capacity(){return this.dataType.isVariable?this.byteCapacity.valueOf():this.dataType.density.length(this.byteCapacity)}get byteLength(){return this.writePos===Te?this.byteCapacity:this.dataType.isVariable?new ot(this.writePos):this.dataType.density.size(this.writePos)}get length(){return this._cachedLength!=null?this._cachedLength:this.dataType.isVariable?this.calculateCachedLength():this.writePos===Te?this.data.length:this.writePos}calculateCachedLength(){if(!this.dataType.isVariable)throw new Error("cannot calculate length of a non-variable length data type");let e=0;const t=[0];return this.data.forEach((n,i)=>{n===fn&&(e++,t.push(i+1))}),this._cachedIndexes=t,this._cachedLength=e,e}convert(e,t=0){if(this.dataType.equals(e))return this;const n=new e.Array(this.length);for(let i=0;it>n?t:n)}else{const e=this.data;this._cachedMax=e.reduce((t,n)=>t>n?t:n)}return this._cachedMax}get max(){if(this.dataType.isVariable)throw new Error("cannot calculate maximum on a variable length data type");return this.writePos===0?-1/0:(this._cachedMax??(this._cachedMax=this.calcRawMax()),St(this._cachedMax,this.sampleOffset))}calcRawMin(){if(this.length===0)return 1/0;if(this.dataType.equals(N.TIMESTAMP))this._cachedMin=this.data[0];else if(this.dataType.usesBigInt){const e=this.data;this._cachedMin=e.reduce((t,n)=>ttthis._cachedMax&&(this._cachedMax=t)}}enrich(){this.max,this.min}get range(){return St(this.max,-this.min)}atAlignment(e,t){const n=Number(e-this.alignment);if(n<0||n>=this.length){if(t===!0)throw new Error(`[series] - no value at index ${n}`);return}return this.at(n,t)}at(e,t){if(this.dataType.isVariable)return this.atVariable(e,t??!1);e<0&&(e=this.length+e);const n=this.data[e];if(n==null){if(t===!0)throw new Error(`[series] - no value at index ${e}`);return}return St(n,this.sampleOffset)}atVariable(e,t){let n=0,i=0;if(this._cachedIndexes!=null)n=this._cachedIndexes[e],i=this._cachedIndexes[e+1]-1;else{e<0&&(e=this.length+e);for(let o=0;o=i||e>0){if(t)throw new Error(`[series] - no value at index ${e}`);return}}const a=this.data.slice(n,i);return this.dataType.equals(N.STRING)?new TextDecoder().decode(a):ci(JSON.parse(new TextDecoder().decode(a)))}binarySearch(e){let t=0,n=this.length-1;const i=vl(e);for(;t<=n;){const a=Math.floor((t+n)/2),o=i(this.at(a,!0),e);if(o===0)return a;o<0?t=a+1:n=a-1}return t}updateGLBuffer(e){if(this.gl.control=e,!this.dataType.equals(N.FLOAT32))throw new Error("Only FLOAT32 arrays can be used in WebGL");const{buffer:t,bufferUsage:n,prevBuffer:i}=this.gl;if(t==null&&(this.gl.buffer=e.createBuffer()),this.writePos!==i)if(e.bindBuffer(e.ARRAY_BUFFER,this.gl.buffer),this.writePos!==Te){i===0&&e.bufferData(e.ARRAY_BUFFER,this.byteCapacity.valueOf(),e.STATIC_DRAW);const a=this.dataType.density.size(i).valueOf(),o=this.underlyingData.slice(this.gl.prevBuffer,this.writePos);e.bufferSubData(e.ARRAY_BUFFER,a,o.buffer),this.gl.prevBuffer=this.writePos}else e.bufferData(e.ARRAY_BUFFER,this.underlyingData,n==="static"?e.STATIC_DRAW:e.DYNAMIC_DRAW),this.gl.prevBuffer=Te}as(e){if(e==="string"){if(!this.dataType.equals(N.STRING))throw new Error(`cannot convert series of type ${this.dataType.toString()} to string`);return this}if(e==="number"){if(!this.dataType.isNumeric)throw new Error(`cannot convert series of type ${this.dataType.toString()} to number`);return this}if(e==="bigint"){if(!this.dataType.equals(N.INT64))throw new Error(`cannot convert series of type ${this.dataType.toString()} to bigint`);return this}throw new Error(`cannot convert series to ${e}`)}get digest(){var e;return{key:this.key,dataType:this.dataType.toString(),sampleOffset:this.sampleOffset,alignment:this.alignmentBounds,timeRange:(e=this._timeRange)==null?void 0:e.toString(),length:this.length,capacity:this.capacity}}get memInfo(){return{key:this.key,length:this.length,byteLength:this.byteLength,glBuffer:this.gl.buffer!=null}}get alignmentBounds(){return K(this.alignment,this.alignment+BigInt(this.length))}maybeGarbageCollectGLBuffer(e){this.gl.buffer!=null&&(e.deleteBuffer(this.gl.buffer),this.gl.buffer=null,this.gl.prevBuffer=0,this.gl.control=null)}get glBuffer(){if(this.gl.buffer==null)throw new Error("gl buffer not initialized");return this.gl.prevBuffer!==this.writePos&&console.warn("buffer not updated"),this.gl.buffer}[Symbol.iterator](){if(this.dataType.isVariable){const e=new Bl(this);return this.dataType.equals(N.JSON)?new Zl(e):e}return new Ul(this)}slice(e,t){return this.sliceSub(!1,e,t)}sub(e,t){return this.sliceSub(!0,e,t)}subIterator(e,t){return new ps(this,e,t??this.length)}subAlignmentIterator(e,t){return new ps(this,Number(e-this.alignment),Number(t-this.alignment))}subBytes(e,t){if(e>=0&&(t==null||t>=this.byteLength.valueOf()))return this;const n=this.data.subarray(e,t);return new ue({data:n,dataType:this.dataType,timeRange:this._timeRange,sampleOffset:this.sampleOffset,glBufferUsage:this.gl.bufferUsage,alignment:this.alignment+BigInt(e)})}sliceSub(e,t,n){if(t<=0&&(n==null||n>=this.length))return this;let i;return e?i=this.data.subarray(t,n):i=this.data.slice(t,n),new ue({data:i,dataType:this.dataType,timeRange:this._timeRange,sampleOffset:this.sampleOffset,glBufferUsage:this.gl.bufferUsage,alignment:this.alignment+BigInt(t)})}reAlign(e){return new ue({data:this.buffer,dataType:this.dataType,timeRange:W.ZERO,sampleOffset:this.sampleOffset,glBufferUsage:"static",alignment:e})}};f(Nt,"crudeZ",s.z.object({timeRange:W.z.optional(),dataType:N.z,alignment:Il.optional(),data:s.z.union([jl,Ml,s.z.instanceof(ArrayBuffer)]),glBufferUsage:Cl.optional().default("static").optional()})),f(Nt,"z",Nt.crudeZ.transform(r=>new Nt(r)));let ze=Nt,ps=class{constructor(e,t,n){f(this,"series"),f(this,"end"),f(this,"index"),this.series=e;const i=K(0,e.length);this.end=us(i,n),this.index=us(i,t)}next(){return this.index>=this.end?{done:!0,value:void 0}:{done:!1,value:this.series.at(this.index++,!0)}}[Symbol.iterator](){return this}};class Bl{constructor(e){if(f(this,"series"),f(this,"index"),f(this,"decoder"),!e.dataType.isVariable)throw new Error("cannot create a variable series iterator for a non-variable series");this.series=e,this.index=0,this.decoder=new TextDecoder}next(){const e=this.index,t=this.series.data;for(;this.index=this.series.length?{done:!0,value:void 0}:{done:!1,value:this.series.at(this.index++,!0)}}[(vs=Symbol.iterator,bs=Symbol.toStringTag,vs)](){return this}}const St=(r,e)=>typeof r=="bigint"&&typeof e=="bigint"||typeof r=="number"&&typeof e=="number"?r+e:e===0?r:r===0?e:Number(r)+Number(e);class Oi{constructor(e){if(f(this,"series"),e.length!==0){const t=e[0].dataType;for(let n=1;ne+t.length,0)}atAlignment(e,t){if(this.series.length===0){if(t)throw new Error(`[series] - no value at alignment ${e}`);return}for(const n of this.series)if(Qt(n.alignmentBounds,e))return n.atAlignment(e,t);if(t)throw new Error(`[series] - no value at alignment ${e}`)}at(e,t=!1){e<0&&(e=this.length+e);for(const n of this.series){if(e=this.alignmentBounds.upper||t<=this.alignmentBounds.lower)return yn;let n=0;for(let a=0;a=o.alignmentBounds.upper)n+=o.length;else if(Qt(o.alignmentBounds,e)){n+=Number(e-o.alignment);break}}let i=0;for(let a=0;a=o.alignmentBounds.upper)i+=o.length;else if(Qt(o.alignmentBounds,t)){i+=Number(t-o.alignment);break}}return new Fr(this,n,i)}subAlignmentSpanIterator(e,t){if(e>=this.alignmentBounds.upper)return yn;let n=0;for(let i=0;i=a.alignmentBounds.upper)n+=a.length;else if(Qt(a.alignmentBounds,e)){n+=Number(e-a.alignment);break}}return new Fr(this,n,n+t)}get byteLength(){return new ot(this.series.reduce((e,t)=>e+t.byteLength.valueOf(),0))}get data(){const e=new this.dataType.Array(this.length);let t=0;for(const n of this.series)e.set(n.data,t),t+=n.length;return new this.dataType.Array(e)}traverseAlignment(e,t){const n=this.series.map(i=>i.alignmentBounds);return nl(n,e,t)}distance(e,t){const n=this.series.map(i=>i.alignmentBounds);return sl(n,e,t)}[Symbol.iterator](){return this.series.length===0?{next(){return{done:!0,value:void 0}}}:new Ll(this.series)}}var Ts,Os;class Ll{constructor(e){f(this,"series"),f(this,"seriesIndex"),f(this,"internal"),f(this,Ts,"MultiSeriesIterator"),this.series=e,this.seriesIndex=0,this.internal=e[0][Symbol.iterator]()}next(){const e=this.internal.next();return e.done===!1?e:this.seriesIndex===this.series.length-1?{done:!0,value:void 0}:(this.internal=this.series[++this.seriesIndex][Symbol.iterator](),this.next())}[(Os=Symbol.iterator,Ts=Symbol.toStringTag,Os)](){return this}}class Fr{constructor(e,t,n){f(this,"series"),f(this,"index"),f(this,"end"),this.series=e,this.end=n,this.index=t}next(){return this.index>=this.end?{done:!0,value:void 0}:{done:!1,value:this.series.at(this.index++,!0)}}[Symbol.iterator](){return this}}s.z.object({key:s.z.string(),value:s.z.string()});var _l=Object.defineProperty,Yl=(r,e,t)=>e in r?_l(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,ur=(r,e,t)=>Yl(r,typeof e!="symbol"?e+"":e,t);let ql=class{constructor(e,t){ur(this,"handlers"),ur(this,"transform"),ur(this,"closer"),this.transform=e,this.handlers=t??new Map}onChange(e){return this.handlers.set(e,null),()=>this.handlers.delete(e)}notify(e){let t=e;if(this.transform!=null){const[n,i]=this.transform(e);if(!i)return;t=n}this.handlers.forEach((n,i)=>i(t))}setCloser(e){this.closer=e}async close(){var e;return await((e=this.closer)==null?void 0:e.call(this))}},Wl=class{constructor(e){ur(this,"handlers"),this.handlers=e??new Map}onChange(e){return this.handlers.set(e,null),()=>this.handlers.delete(e)}notify(e){this.handlers.forEach((t,n)=>n(e))}};const Pe=Object.freeze(Object.defineProperty({__proto__:null,BaseObserver:Wl,Observer:ql},Symbol.toStringTag,{value:"Module"})),Ut=s.z.record(s.z.union([s.z.number(),s.z.string(),s.z.symbol()]),s.z.unknown()),Gl=()=>typeof process<"u"&&process.versions!=null&&process.versions.node!=null?"node":typeof window>"u"||window.document===void 0?"webworker":"browser";Gl();const Vl=["MacOS","Windows","Linux","Docker"];s.z.enum(Vl);var Fl=Object.defineProperty,Jl=(r,e,t)=>e in r?Fl(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,It=(r,e,t)=>Jl(r,typeof e!="symbol"?e+"":e,t);const Kl=(...r)=>r.map(zi).join(""),zi=r=>(r.endsWith("/")||(r+="/"),r.startsWith("/")&&(r=r.slice(1)),r),Hl=r=>r.endsWith("/")?r.slice(0,-1):r,gn=class pn{constructor({host:e,port:t,protocol:n="",pathPrefix:i=""}){It(this,"protocol"),It(this,"host"),It(this,"port"),It(this,"path"),this.protocol=n,this.host=e,this.port=t,this.path=zi(i)}replace(e){return new pn({host:e.host??this.host,port:e.port??this.port,protocol:e.protocol??this.protocol,pathPrefix:e.pathPrefix??this.path})}child(e){return new pn({...this,pathPrefix:Kl(this.path,e)})}toString(){return Hl(`${this.protocol}://${this.host}:${this.port}/${this.path}`)}};It(gn,"UNKNOWN",new gn({host:"unknown",port:0}));let Xl=gn;var Ql=Object.defineProperty,eu=(r,e,t)=>e in r?Ql(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,hr=(r,e,t)=>eu(r,typeof e!="symbol"?e+"":e,t);const $e=class extends Number{};hr($e,"Absolute",255),hr($e,"Default",1),hr($e,"z",s.z.union([s.z.instanceof($e),s.z.number().int().min(0).max(255).transform(r=>new $e(r)),s.z.instanceof(Number).transform(r=>new $e(r))]));let Ei=$e;const Ni=s.z.object({name:s.z.string(),key:s.z.string()}),tu=r=>s.z.object({subject:Ni,resource:r,authority:Ei.z}),ru=(...r)=>e=>e.filter(t=>{let n=!1;return t.to!=null&&(n=r.includes(t.to.resource)),t.from!=null&&!n&&(n=r.includes(t.from.resource)),n}),ct=Object.freeze(Object.defineProperty({__proto__:null,Authority:Ei,filterTransfersByChannelKey:ru,stateZ:tu,subjectZ:Ni},Symbol.toStringTag,{value:"Module"})),Si=class kt extends Error{constructor(){super(kt.MESSAGE)}matches(e){return typeof e=="string"?e.includes(kt.MESSAGE):e instanceof kt||e.message.includes(kt.MESSAGE)}};hr(Si,"MESSAGE","canceled");let nu=Si;new nu;const mn=s.z.string().regex(/^\d+\.\d+\.\d+$/),Lt=(r,e,t={})=>{t.checkMajor??(t.checkMajor=!0),t.checkMinor??(t.checkMinor=!0),t.checkPatch??(t.checkPatch=!0);const n=mn.parse(r),i=mn.parse(e),[a,o,l]=n.split(".").map(Number),[u,h,y]=i.split(".").map(Number);if(t.checkMajor){if(au)return Vr}if(t.checkMinor){if(oh)return Vr}if(t.checkPatch){if(ly)return Vr}return zr},su=(r,e,t={})=>El(Lt(r,e,t)),Ii=(r,e,t={})=>zl(Lt(r,e,t)),iu=(r,e,t={})=>Ol(Lt(r,e,t)),au=({name:r,migrate:e})=>t=>{try{const n=e(t);return console.log(`${r} migrated: ${t.version} -> ${n.version}`),n}catch(n){throw console.log(`${r} failed to migrate from ${t.version}`),console.error(n),n}},ou=({name:r,migrations:e,targetSchema:t,defaultVersion:n,def:i})=>{const a=Object.keys(e).sort(Lt).pop();if(a==null)return h=>{if(h.version??(h.version=n),h.version!==i.version)return console.log(`${r} version ${h.version} is newer than latest version of ${i.version}. Returning default instead. `),i;try{return t!=null?t.parse(h):h}catch(y){return console.log(`${r} failed to parse default. Exiting with default`),console.error(y),i}};const o=Object.keys(e).length;let l=!1;const u=h=>{try{if(o===0||Ii(h.version,a))return console.log(l?`${r} ${h.version} now up to date`:`${r} version ${h.version} is up to date with target version ${i.version}`),h;const y=h.version,d=e[y],P=d(h);return l=!0,u(P)}catch(y){return console.log(`${r} failed to migrate from ${h.version} to ${a}`),console.error(y),i}};return h=>{try{if(h.version==null)if(n!=null)console.log(`${r} version is null. Setting version to default of ${n}`),h.version=n;else return console.log(`${r} version is null and no default version set. Exiting with default`),i;return u(h)}catch(y){return console.log(`${r} failed to parse final result. Exiting with default`),console.error(y),i}}},zs=Object.freeze(Object.defineProperty({__proto__:null,compareSemVer:Lt,createMigration:au,migrator:ou,semVerNewer:Ii,semVerOlder:iu,semVerZ:mn,versionsEqual:su},Symbol.toStringTag,{value:"Module"})),Ie="sy.",qe=class qe extends se{constructor(){super(...arguments);c(this,"type",qe.TYPE)}};c(qe,"TYPE",`${Ie}validation`),c(qe,"matches",X(qe.TYPE));let M=qe;const We=class We extends M{constructor(t,n){super(`${t}: ${n}`);c(this,"type",We.TYPE);c(this,"field");c(this,"message");this.field=t,this.message=n}};c(We,"TYPE",`${M.TYPE}.field`),c(We,"matches",X(We.TYPE));let pr=We;const Ge=class Ge extends se{constructor(){super(...arguments);c(this,"type",Ge.TYPE)}};c(Ge,"TYPE",`${Ie}auth`),c(Ge,"matches",X(Ge.TYPE));let De=Ge;const Ve=class Ve extends De{constructor(){super(...arguments);c(this,"type",Ve.TYPE)}};c(Ve,"TYPE",`${De.TYPE}.invalid-token`),c(Ve,"matches",X(Ve.TYPE));let Ct=Ve;const Fe=class Fe extends se{constructor(t){super(` Unexpected error encountered: ${t} Please report this to the Synnax team. `);c(this,"type",Fe.TYPE)}};c(Fe,"TYPE",`${Ie}unexpected`),c(Fe,"matches",X(Fe.TYPE));let Ne=Fe;const Je=class Je extends se{constructor(){super(...arguments);c(this,"type",Je.TYPE)}};c(Je,"TYPE",`${Ie}query`),c(Je,"matches",X(Je.TYPE));let re=Je;const Ke=class Ke extends re{constructor(){super(...arguments);c(this,"type",Ke.TYPE)}};c(Ke,"TYPE",`${re.TYPE}.not_found`),c(Ke,"matches",X(Ke.TYPE));let me=Ke;const He=class He extends re{constructor(){super(...arguments);c(this,"type",He.TYPE)}};c(He,"TYPE",`${re.TYPE}.multiple_results`),c(He,"matches",X(He.TYPE));let we=He;const Xe=class Xe extends se{constructor(t,n){super(t);c(this,"type",Xe.TYPE);c(this,"path");this.path=n}};c(Xe,"TYPE",`${Ie}route`),c(Xe,"matches",X(Xe.TYPE));let Pt=Xe;const Qe=class Qe extends se{constructor(){super(...arguments);c(this,"type",Qe.TYPE)}};c(Qe,"TYPE",`${Ie}control`),c(Qe,"matches",X(Qe.TYPE));let lt=Qe;const et=class et extends lt{constructor(){super(...arguments);c(this,"type",et.TYPE)}};c(et,"TYPE",`${lt.TYPE}.unauthorized`),c(et,"matches",X(et.TYPE));let mr=et;const tt=class tt extends se{constructor(){super(...arguments);c(this,"type",tt.TYPE)}};c(tt,"TYPE",`${Ie}contiguity`),c(tt,"matches",X(tt.TYPE));let wn=tt;const cu=r=>{if(!r.type.startsWith(Ie))return null;if(r.type.startsWith(M.TYPE)){if(r.type===pr.TYPE){const e=r.data.split(": ");return e.length<2?new M(r.data):new pr(e[0],e[1])}return new M(r.data)}return r.type.startsWith(De.TYPE)?r.type.startsWith(Ct.TYPE)?new Ct(r.data):new De(r.data):r.type.startsWith(Ne.TYPE)?new Ne(r.data):r.type.startsWith(re.TYPE)?r.type.startsWith(me.TYPE)?new me(r.data):r.type.startsWith(we.TYPE)?new we(r.data):new re(r.data):r.type.startsWith(lt.TYPE)?r.type.startsWith(mr.TYPE)?new mr(r.data):new lt(r.data):r.type.startsWith(Pt.TYPE)?new Pt(r.data,r.data):new Ne(r.data)},lu=()=>{throw new Error("Not implemented")};Qs({encode:lu,decode:cu});const uu=async(r,e)=>{const[t,n]=await e(r);return n==null?[t,n]:n instanceof Ce?[t,new Ce({message:`Cannot reach cluster at ${n.url.host}:${n.url.port}`,url:n.url})]:[t,n]};class ki{constructor(e,t){c(this,"key");c(this,"name");this.key=t,this.name=e}get ontologyID(){return new v({type:"group",key:this.key})}}const hu=s.z.string().uuid(),$i=s.z.object({key:hu,name:s.z.string()}),_t=s.z.union([s.z.literal("label"),s.z.literal("log"),s.z.literal("allow_all"),s.z.literal("builtin"),s.z.literal("cluster"),s.z.literal("channel"),s.z.literal("node"),s.z.literal("group"),s.z.literal("range"),s.z.literal("framer"),s.z.literal("range-alias"),s.z.literal("user"),s.z.literal("workspace"),s.z.literal("schematic"),s.z.literal("lineplot"),s.z.literal("rack"),s.z.literal("device"),s.z.literal("task"),s.z.literal("policy"),s.z.literal("table")]),du="builtin",yu="cluster",fu="node",H=s.z.object({type:_t,key:s.z.string()}),Ai=s.z.string().transform(r=>{const[e,t]=r.split(":");return{type:_t.parse(e),key:t??""}}),_e=s.z.union([Ai,H]),rt=class rt{constructor(e){c(this,"type");c(this,"key");if(e instanceof rt){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}}};c(rt,"z",s.z.union([s.z.instanceof(rt),_e.transform(e=>new rt(e))]));let v=rt;const gu=new v({type:"builtin",key:"root"}),Ri=s.z.object({type:s.z.number()}),xi=s.z.object({type:_t,fields:s.z.record(Ri)}),Ci=s.z.object({id:v.z,name:s.z.string(),schema:xi.optional().nullable(),data:s.z.record(s.z.unknown()).optional().nullable()}).transform(r=>({key:r.id.toString(),...r})),pu=s.z.object({from:v.z,type:s.z.string(),to:v.z}),bn=r=>{const[e,t,n]=r.split("->");return{from:new v(e),type:t,to:new v(n)}},mu=s.z.object({group:$i}),wu=s.z.object({parent:H,key:s.z.string().uuid().optional(),name:s.z.string()}),bu=s.z.object({key:s.z.string(),name:s.z.string()}),vu=s.z.object({keys:s.z.array(s.z.string())});var ne;let Tu=(ne=class{constructor(e){c(this,"client");this.client=e}async create(e,t,n){return(await w(this.client,ne.ENDPOINT,{parent:e,name:t,key:n},wu,mu)).group}async rename(e,t){await w(this.client,ne.ENDPOINT_RENAME,{key:e,name:t},bu,s.z.object({}))}async delete(e){await w(this.client,ne.ENDPOINT_DELETE,{keys:e},vu,s.z.object({}))}},c(ne,"ENDPOINT","/ontology/create-group"),c(ne,"ENDPOINT_RENAME","/ontology/rename-group"),c(ne,"ENDPOINT_DELETE","/ontology/delete-group"),ne),Ou=class{constructor(e){c(this,"creator");this.creator=new Tu(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 ki(e.name,e.key)}};const Jr={ADD_CHILDREN:"/ontology/add-children",REMOVE_CHILDREN:"/ontology/remove-children",MOVE_CHILDREN:"/ontology/move-children"},Es=s.z.object({id:H,children:H.array()}),zu=s.z.object({from:H,to:H,children:H.array()});let Eu=class{constructor(e){c(this,"client");this.client=e}async addChildren(e,...t){await w(this.client,Jr.ADD_CHILDREN,{id:new v(e).payload,children:t.map(n=>new v(n).payload)},Es,s.z.object({}))}async removeChildren(e,...t){await w(this.client,Jr.REMOVE_CHILDREN,{id:new v(e).payload,children:t.map(n=>new v(n).payload)},Es,s.z.object({}))}async moveChildren(e,t,...n){const i={from:new v(e).payload,to:new v(t).payload,children:n.map(a=>new v(a).payload)};await w(this.client,Jr.MOVE_CHILDREN,i,zu,s.z.object({}))}};const Nu="/ontology/retrieve",Su=s.z.object({ids:H.array().optional(),children:s.z.boolean().optional(),parents:s.z.boolean().optional(),includeSchema:s.z.boolean().optional(),excludeFieldData:s.z.boolean().optional(),term:s.z.string().optional(),limit:s.z.number().optional(),offset:s.z.number().optional(),types:_t.array().optional()}),Iu=s.z.object({resources:Ci.array()}),dr=r=>b(r).map(e=>new v(e).payload);let Pi=class{constructor(e,t){c(this,"type","ontology");c(this,"groups");c(this,"client");c(this,"writer");c(this,"framer");this.client=e,this.writer=new Eu(e),this.groups=new Ou(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:dr(e),...t});if(Array.isArray(e))return n;if(n.length===0)throw new re(`No resource found with ID ${e.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:dr(e),children:!0,...t})}async retrieveParents(e,t){return await this.execRetrieve({ids:dr(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 Yt.open(this.framer,this)}async openDependentTracker(e){return await Er.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 w(this.client,Nu,e,Su,Iu);return t}};const Ns="sy_ontology_resource_set",Ss="sy_ontology_resource_delete",Is="sy_ontology_relationship_set",ks="sy_ontology_relationship_delete";class Yt{constructor(e,t){c(this,"relationships");c(this,"resources");c(this,"resourceObs");c(this,"relationshipObs");c(this,"streamer");c(this,"client");c(this,"closePromise");this.relationshipObs=new Pe.Observer,this.relationships=this.relationshipObs,this.resourceObs=new Pe.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(Is);return t.length===0?[]:Array.from(t.as("string")).map(n=>({variant:"set",key:bn(n),value:void 0}))}parseRelationshipDeletes(e){const t=e.get(ks);return t.length===0?[]:Array.from(t.as("string")).map(n=>({variant:"delete",key:bn(n)}))}async parseResourceSets(e){const t=e.get(Ns);if(t.length===0)return[];const n=Array.from(t.as("string")).map(i=>new v(i));try{return(await this.client.retrieve(n)).map(a=>({variant:"set",key:a.id,value:a}))}catch(i){if(i instanceof re)return[];throw i}}parseResourceDeletes(e){const t=e.get(Ss);return t.length===0?[]:Array.from(t.as("string")).map(n=>({variant:"delete",key:new v(n)}))}static async open(e,t){const n=await e.openStreamer([Ns,Ss,Is,ks]);return new Yt(n,t)}}const $s=r=>r==="from"?"to":"from";class Er extends Pe.Observer{constructor({target:t,dependents:n,relationshipType:i="parent",relationshipDirection:a="from",resourceType:o},l,u){super();c(this,"internal");c(this,"target");c(this,"relDir");c(this,"resourceType");c(this,"dependents");c(this,"client");c(this,"relType");c(this,"handleResourceChange",t=>{this.dependents=this.dependents.map(n=>{const i=t.find(a=>a.key.toString()==n.id.toString());return i==null||i.variant==="delete"?n:i.value}),this.notify(this.dependents)});c(this,"handleRelationshipChange",t=>{const n=t.filter(a=>a.variant==="delete"&&a.key[this.relDir].toString()===this.target.toString()&&(this.resourceType==null||a.key[$s(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 i=t.filter(a=>a.variant==="set"&&a.key.type===this.relType&&a.key[this.relDir].toString()===this.target.toString()&&(this.resourceType==null||a.key[$s(this.relDir)].type===this.resourceType));if(i.length===0)return this.notify(this.dependents);this.client.retrieve(i.map(a=>a.key.to)).then(a=>{this.dependents=this.dependents.concat(a),this.notify(this.dependents)})});this.resourceType=o,this.internal=l,this.target=t,this.dependents=n,this.resourceType!=null&&(this.dependents=this.dependents.filter(h=>h.id.type===this.resourceType)),this.client=u,this.relType=i,this.relDir=a,this.internal.resources.onChange(this.handleResourceChange),this.internal.relationships.onChange(this.handleRelationshipChange)}static async open(t,n,i){const a=await Yt.open(n,i);return new Er(t,a,i)}async close(){await this.internal.close()}}const ku=Object.freeze(Object.defineProperty({__proto__:null,BUILTIN_TYPE:du,CLUSTER_TYPE:yu,ChangeTracker:Yt,Client:Pi,DependentTracker:Er,ID:v,NODE_TYPE:fu,Root:gu,crudeIDZ:_e,idZ:H,parseIDs:dr,parseRelationship:bn,relationshipSchemaZ:pu,resourceSchemaZ:Ci,resourceTypeZ:_t,schemaFieldZ:Ri,schemaZ:xi,stringIDZ:Ai},Symbol.toStringTag,{value:"Module"})),te=r=>s.z.union([s.z.null().transform(()=>[]),r.array()]),qt=s.z.string().uuid(),Di=s.z.object({key:qt.optional(),subjects:_e.array().or(_e),objects:_e.array().or(_e),actions:fr.array().or(fr)}),Nr=s.z.object({key:qt,subjects:te(H),objects:te(H),actions:te(fr)}),ji="policy",$u=r=>new v({type:ji,key:r}),Mi="allow_all",Au=new v({type:Mi,key:""}),Ru=s.z.object({keys:qt.array().optional(),subjects:H.array().optional()}),xu=s.z.object({policies:te(Nr)}),Cu="/access/policy/retrieve";let Pu=class{constructor(e){c(this,"client");this.client=e}async retrieve(e){return(await w(this.client,Cu,e,Ru,xu)).policies}};const Du=s.z.object({policies:Nr.partial({key:!0}).array()}),ju=s.z.object({policies:Nr.array()}),Mu=s.z.object({keys:qt.array()}),Bu=s.z.object({}),Zu="/access/policy/create",Uu="/access/policy/delete";let Lu=class{constructor(e){c(this,"client");this.client=e}async create(e){const n=Di.array().parse(b(e)).map(a=>({objects:b(a.objects),actions:b(a.actions),subjects:b(a.subjects)}));return(await w(this.client,Zu,{policies:n},Du,ju)).policies}async delete(e){await w(this.client,Uu,{keys:b(e)},Mu,Bu)}},Bi=class{constructor(e){c(this,"retriever");c(this,"writer");this.retriever=new Pu(e),this.writer=new Lu(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 v(n).payload);return await this.retriever.retrieve({subjects:t})}async delete(e){await this.writer.delete(e)}};const _u=Object.freeze(Object.defineProperty({__proto__:null,ALLOW_ALL_ONTOLOGY_ID:Au,ALLOW_ALL_ONTOLOGY_TYPE:Mi,Client:Bi,ONTOLOGY_TYPE:ji,keyZ:qt,newPolicyZ:Di,ontologyID:$u,policyZ:Nr},Symbol.toStringTag,{value:"Module"}));let Zi=class{constructor(e){c(this,"policy");this.policy=new Bi(e)}};const Yu=Object.freeze(Object.defineProperty({__proto__:null,ALL_ACTION:kc,CREATE_ACTION:$c,Client:Zi,DELETE_ACTION:Ac,RETRIEVE_ACTION:Rc,UPDATE_ACTION:xc,actionZ:fr},Symbol.toStringTag,{value:"Module"})),ke=s.z.number(),Wt=s.z.object({name:s.z.string(),key:s.z.number(),rate:at.z,dataType:N.z,leaseholder:s.z.number(),index:s.z.number(),isIndex:s.z.boolean(),internal:s.z.boolean(),virtual:s.z.boolean(),alias:s.z.string().optional()}),Ui=Wt.extend({key:s.z.number().optional(),leaseholder:s.z.number().optional(),index:s.z.number().optional(),rate:at.z.optional().default(0),isIndex:s.z.boolean().optional(),internal:s.z.boolean().optional().default(!1),virtual:s.z.boolean().optional().default(!1)}),Li="channel",qu=r=>new v({type:Li,key:r.toString()}),Wu=new Error("request for lock canceled");var Gu=function(r,e,t,n){function i(a){return a instanceof t?a:new t(function(o){o(a)})}return new(t||(t=Promise))(function(a,o){function l(y){try{h(n.next(y))}catch(d){o(d)}}function u(y){try{h(n.throw(y))}catch(d){o(d)}}function h(y){y.done?a(y.value):i(y.value).then(l,u)}h((n=n.apply(r,e||[])).next())})};class Vu{constructor(e,t=Wu){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,i)=>{const a={resolve:n,reject:i,weight:e,priority:t},o=_i(this._queue,l=>t<=l.priority);o===-1&&e<=this._value?this._dispatchItem(a):this._queue.splice(o+1,0,a)})}runExclusive(e){return Gu(this,arguments,void 0,function*(t,n=1,i=0){const[a,o]=yield this.acquire(n,i);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]=[]),Fu(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 i=n.findIndex(a=>a.priority<=e);(i===-1?n:n.splice(0,i)).forEach(a=>a.resolve())}}}_couldLockImmediately(e,t){return(this._queue.length===0||this._queue[0].prioritye.priority<=n.priority);r.splice(t+1,0,e)}function _i(r,e){for(let t=r.length-1;t>=0;t--)if(e(r[t]))return t;return-1}var Ju=function(r,e,t,n){function i(a){return a instanceof t?a:new t(function(o){o(a)})}return new(t||(t=Promise))(function(a,o){function l(y){try{h(n.next(y))}catch(d){o(d)}}function u(y){try{h(n.throw(y))}catch(d){o(d)}}function h(y){y.done?a(y.value):i(y.value).then(l,u)}h((n=n.apply(r,e||[])).next())})};class Ku{constructor(e){this._semaphore=new Vu(1,e)}acquire(){return Ju(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 Sr=(r,e,{convertNumericStrings:t=!0}={})=>{const n=!Array.isArray(r);let i=b(r);const a=i[0],o=typeof a;let l;return o==="string"&&t&&!isNaN(parseInt(a))&&"number"in e?(l=e.number,i=i.map(u=>parseInt(u))):l=e[o],{single:n,variant:l,normalized:i,actual:r}},Ir=(r,e,t,n)=>{if(n){if(t.length===0)throw new me(`${r} not found matching ${JSON.stringify(e)}`);if(t.length>1)throw new we(`Expected one ${r} matching ${JSON.stringify(e)}, but found ${t.length}`)}},Hu=s.z.object({leaseholder:s.z.number().optional(),keys:s.z.number().array().optional(),names:s.z.string().array().optional(),search:s.z.string().optional(),rangeKey:s.z.string().optional(),limit:s.z.number().optional(),offset:s.z.number().optional(),dataTypes:N.z.array().optional(),notDataTypes:N.z.array().optional(),virtual:s.z.boolean().optional(),isIndex:s.z.boolean().optional(),internal:s.z.boolean().optional()}),Xu=s.z.object({channels:te(Wt)}),be=r=>Sr(r,{number:"keys",string:"names"}),br=class br{constructor(e){c(this,"client");this.client=e}async search(e,t){return await this.execute({search:e,...t})}async retrieve(e,t){const n=be(e),{variant:i}=n;let{normalized:a}=n;return i==="keys"&&a.indexOf(0)!==-1&&(a=a.filter(o=>o!==0)),a.length===0?[]:await this.execute({[i]: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(br.ENDPOINT,e,Hu,Xu);if(n!=null)throw n;return t.channels}};c(br,"ENDPOINT","/channel/retrieve");let Dt=br;class In{constructor(e){c(this,"cache");c(this,"namesToKeys");c(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}=Sr(e,{string:"names",number:"keys"}),i=[],a=[];if(n.forEach(l=>{const u=this.get(l);u!=null?i.push(...u):a.push(l)}),a.length===0)return i;const o=await this.wrapped.retrieve(a,t);return this.set(o),i.concat(o)}delete(e){const{variant:t,normalized:n}=be(e);t==="names"?n.forEach(i=>{const a=this.namesToKeys.get(i);a!=null&&(a.forEach(o=>this.cache.delete(o)),this.namesToKeys.delete(i))}):n.forEach(i=>{const a=this.cache.get(i);a!=null&&(this.cache.delete(i),this.namesToKeys.delete(a.name))})}rename(e,t){e.forEach((n,i)=>{const a=t[i],o=this.cache.get(n);if(o==null)return;this.cache.delete(n);const l=this.namesToKeys.get(o.name);l!=null&&(l.delete(n),l.size===0&&this.namesToKeys.delete(o.name)),o.name=a,this.cache.set(n,o);const u=this.namesToKeys.get(a);u==null?this.namesToKeys.set(a,new Set([n])):u.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 i=this.cache.get(e);return i==null?void 0:[i]}const t=this.namesToKeys.get(e);if(t==null)return;const n=[];if(t.forEach(i=>{const a=this.cache.get(i);a!=null&&n.push(a)}),n.length!==0)return n}}class Yi{constructor(e,t){c(this,"mu",new Ku);c(this,"requests",new Map);c(this,"wrapped");c(this,"debouncedRun");this.wrapped=e,this.debouncedRun=Nl(()=>{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}=be(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(i=>e.add(i)));try{const t=await this.wrapped.retrieve(Array.from(e));this.requests.forEach((n,i)=>n.resolve(t.filter(a=>i.includes(a.key))))}catch(t){this.requests.forEach(n=>n.reject(t))}finally{this.requests.clear()}})}}const qi=async(r,e)=>{const{normalized:t}=be(e),n=await r.retrieve(t),i=[];if(t.forEach(a=>{n.find(o=>o.name===a||o.key===a)==null&&i.push(a)}),i.length>0)throw new re(`Could not find channels: ${JSON.stringify(i)}`);return n};class kn{constructor({dataType:e,rate:t,name:n,leaseholder:i=0,key:a=0,isIndex:o=!1,index:l=0,internal:u=!1,virtual:h=!1,frameClient:y,alias:d}){c(this,"_frameClient");c(this,"key");c(this,"name");c(this,"rate");c(this,"dataType");c(this,"leaseholder");c(this,"index");c(this,"isIndex");c(this,"internal");c(this,"alias");c(this,"virtual");this.key=a,this.name=n,this.rate=new at(t??0),this.dataType=new N(e),this.leaseholder=i,this.index=l,this.isIndex=o,this.internal=u,this.alias=d,this.virtual=h,this._frameClient=y??null}get framer(){if(this._frameClient==null)throw new M("cannot read from a channel that has not been created");return this._frameClient}get payload(){return Wt.parse({key:this.key,name:this.name,rate:this.rate.valueOf(),dataType:this.dataType.valueOf(),leaseholder:this.leaseholder,index:this.index,isIndex:this.isIndex,internal:this.internal})}get ontologyID(){return new v({type:"channel",key:this.key.toString()})}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 Qu="/channel/retrieve-group",eh=s.z.object({}),th=s.z.object({group:$i});let Wi=class{constructor(e,t,n,i){c(this,"type","channel");c(this,"frameClient");c(this,"client");c(this,"retriever");c(this,"writer");this.frameClient=e,this.retriever=t,this.client=n,this.writer=i}async create(e,t={}){const{retrieveIfNameExists:n=!1}=t,i=!Array.isArray(e);let a=b(e),o=[];if(n){const l=await this.retriever.retrieve(a.map(h=>h.name)),u=new Set(l.map(h=>h.name));a=a.filter(h=>!u.has(h.name)),o=this.sugar(l)}return o=o.concat(this.sugar(await this.writer.create(a))),i?o[0]:o}async retrieve(e,t){const n=!Array.isArray(e),i=this.sugar(await this.retriever.retrieve(e,t));return Ir("channel",e,i,n),n?i[0]:i}async search(e,t){return this.sugar(await this.retriever.search(e,t))}async delete(e){const{normalized:t,variant:n}=be(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 In(new Yi(new Dt(this.client),e))}sugar(e){const{frameClient:t}=this;return e.map(n=>new kn({...n,frameClient:t}))}async retrieveGroup(){const e=await w(this.client,Qu,{},eh,th);return new ki(e.group.name,e.group.key)}};const rh=s.z.object({channels:Ui.array()}),nh=s.z.object({channels:Wt.array()}),sh=s.z.object({keys:ke.array().optional(),names:s.z.string().array().optional()}),ih=s.z.object({}),ah=s.z.object({keys:ke.array(),names:s.z.string().array()}),oh=s.z.object({}),ch="/channel/create",lh="/channel/delete",uh="/channel/rename";let Gi=class{constructor(e,t){c(this,"client");c(this,"cache");this.client=e,this.cache=t}async create(e){const{channels:t}=await w(this.client,ch,{channels:e},rh,nh);return this.cache.set(t),t}async delete(e){await w(this.client,lh,e,sh,ih),e.keys!=null&&this.cache.delete(e.keys),e.names!=null&&this.cache.delete(e.names)}async rename(e,t){await w(this.client,uh,{keys:e,names:t},ah,oh),this.cache.rename(e,t)}};const hh=Object.freeze(Object.defineProperty({__proto__:null,CacheRetriever:In,Channel:kn,Client:Wi,ClusterRetriever:Dt,DebouncedBatchRetriever:Yi,ONTOLOGY_TYPE:Li,Writer:Gi,analyzeChannelParams:be,keyZ:ke,newPayload:Ui,ontologyID:qu,payload:Wt,retrieveRequired:qi},Symbol.toStringTag,{value:"Module"})),yt=s.z.string().uuid(),Gt=s.z.object({key:yt,username:s.z.string().min(1),firstName:s.z.string().default(""),lastName:s.z.string().default(""),rootUser:s.z.boolean().default(!0)}),Vi=Gt.partial({key:!0,firstName:!0,lastName:!0}).omit({rootUser:!0}).extend({password:s.z.string().min(1)}),Fi="user",dh=r=>new v({type:Fi,key:r}),yh=s.z.object({keys:yt.array().optional(),usernames:s.z.string().array().optional()}),fh=s.z.object({users:te(Gt)}),gh="/user/retrieve";let ph=class{constructor(e){c(this,"client");this.client=e}async retrieve(e){return(await w(this.client,gh,e,yh,fh)).users}};const mh=s.z.object({users:Vi.array()}),wh=s.z.object({users:Gt.array()}),bh=s.z.object({key:yt,username:s.z.string().min(1)}),vh=s.z.object({}),Th=s.z.object({key:yt,firstName:s.z.string().optional(),lastName:s.z.string().optional()}),Oh=s.z.object({}),zh=s.z.object({keys:yt.array()}),Eh=s.z.object({}),Nh="/user/create",Sh="/user/change-username",Ih="/user/rename",kh="/user/delete";let $h=class{constructor(e){c(this,"client");this.client=e}async create(e){return(await w(this.client,Nh,{users:b(e)},mh,wh)).users}async changeUsername(e,t){await w(this.client,Sh,{key:e,username:t},bh,vh)}async rename(e,t,n){await w(this.client,Ih,{key:e,firstName:t,lastName:n},Th,Oh)}async delete(e){await w(this.client,kh,{keys:b(e)},zh,Eh)}},Ji=class{constructor(e){c(this,"reader");c(this,"writer");this.writer=new $h(e),this.reader=new ph(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 me(`No user with key ${e} found`);if(n.length>1)throw new we(`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 me(`No user with username ${e} found`);if(n.length>1)throw new we(`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 Ah=Object.freeze(Object.defineProperty({__proto__:null,Client:Ji,ONTOLOGY_TYPE:Fi,keyZ:yt,newUserZ:Vi,ontologyID:dh,userZ:Gt},Symbol.toStringTag,{value:"Module"})),Rh=s.z.object({username:s.z.string(),password:s.z.string()}),xh=s.z.object({token:s.z.string(),user:Gt}),As="/auth/login",Ch=3,Ph="/auth/change-password",Dh=s.z.object({username:s.z.string(),password:s.z.string(),newPassword:s.z.string().min(1)}),jh=s.z.object({});let Mh=class{constructor(e,t){c(this,"token");c(this,"client");c(this,"credentials");c(this,"authenticating");c(this,"authenticated");c(this,"user");c(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 w(this.client,Ph,{username:this.credentials.username,password:this.credentials.password,newPassword:e},Dh,jh),this.credentials.password=e}middleware(){const e=async(t,n)=>{if(!this.authenticated&&!t.target.endsWith(As)){this.authenticating??(this.authenticating=new Promise((l,u)=>{this.client.send(As,this.credentials,Rh,xh).then(([h,y])=>{if(y!=null)return l(y);this.token=h==null?void 0:h.token,this.user=h==null?void 0:h.user,this.authenticated=!0,l(null)}).catch(u)}));const o=await this.authenticating;if(o!=null)return[t,o]}t.params.Authorization=`Bearer ${this.token}`;const[i,a]=await n(t);return Ct.matches(a)&&this.retryCount{const n=t?"cluster":"client";return`Synnax cluster node version ${r!=null?`${r} `:""}is too ${t?"old":"new"} for client version ${e}. This may cause compatibility issues. We recommend updating the ${n}. For more information, see https://docs.synnaxlabs.com/reference/typescript-client/troubleshooting#old-${n}-version`},nt=class nt{constructor(e,t=I.seconds(30),n,i){c(this,"_state");c(this,"pollFrequency",I.seconds(30));c(this,"client");c(this,"name");c(this,"interval");c(this,"clientVersion");c(this,"onChangeHandlers",[]);c(this,"versionWarned",!1);this._state={...Rs},this.client=e,this.pollFrequency=t,this.clientVersion=n,this.name=i,this.check(),this.startChecking()}stopChecking(){this.interval!=null&&clearInterval(this.interval)}async check(){var t;const e=this._state.status;try{const[n,i]=await this.client.send(nt.ENDPOINT,{},s.z.object({}),Zh);if(i!=null)throw i;const a=n.nodeVersion,o=this.clientVersion,l=this.versionWarned;a==null?(this._state.clientServerCompatible=!1,l||(console.warn(xs(null,o,!0)),this.versionWarned=!0)):zs.versionsEqual(o,a,{checkMajor:!0,checkMinor:!0,checkPatch:!1})?this._state.clientServerCompatible=!0:(this._state.clientServerCompatible=!1,l||(console.warn(xs(a,o,zs.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)}};c(nt,"ENDPOINT","/connectivity/check"),c(nt,"DEFAULT",Rs),c(nt,"connectionStateZ",Hi);let jt=nt;const Uh=Object.freeze(Object.defineProperty({__proto__:null,Checker:jt,state:Hi,status:Ki},Symbol.toStringTag,{value:"Module"})),Lh=s.z.object({keys:ke.array().optional(),bounds:W.z,names:s.z.string().array().optional()}),_h=s.z.object({}),Yh="/frame/delete";class qh{constructor(e){c(this,"client");this.client=e}async delete(e){await w(this.client,Yh,e,Lh,_h)}}const Cs=r=>{const e=b(r);return e.length===0?null:typeof e[0]=="number"||!isNaN(parseInt(e[0]))?"key":"name"},Ps=(r,e)=>{const t=b(r);if(t.length===e.length)return;const n=Cs(r);throw Cs===null?new M("[Frame] - channel keys or names must be provided when constructing a frame."):new M(`[Frame] - ${n}s and series must be the same length. Got ${t.length} ${n}s and ${e.length} series.`)};class _{constructor(e=[],t=[]){c(this,"columns",[]);c(this,"series",[]);if(e instanceof _){this.columns=e.columns,this.series=e.series;return}if(e instanceof Map){e.forEach((i,a)=>this.push(a,...b(i)));return}if(typeof e=="object"&&!Array.isArray(e)){if("keys"in e&&"series"in e){const i=e;i.series??(i.series=[]),i.keys??(i.keys=[]);const a=i.series.map(o=>Xi(o));Ps(i.keys,a),i.keys.forEach((o,l)=>this.push(o,a[l]))}else Object.entries(e).forEach(([i,a])=>{const o=parseInt(i);if(!isNaN(o))return this.push(o,...b(a));this.push(i,...b(a))});return}if(Array.isArray(e)||["string","number"].includes(typeof e)){const i=b(t),a=b(e);Ps(a,i),i.forEach((o,l)=>this.push(a[l],o));return}throw new M(`[Frame] - invalid frame construction parameters. data parameter ust be a frame payload, a list of lazy series, a lazy array, a map, or a record keyed by channel 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 Ne("colType is not key");return this.columns??[]}get uniqueKeys(){return gs(this.keys)}get names(){if(this.colType==="key")throw new Ne("colType is not name");return this.columns??[]}get uniqueNames(){return gs(this.names)}get uniqueColumns(){return this.colType==="key"?this.uniqueKeys:this.uniqueNames}toPayload(){return{series:this.series.map(e=>Qi(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 W.ZERO;const n=S.min(...this.series.map(a=>a.timeRange.start)),i=S.max(...this.series.map(a=>a.timeRange.end));return new W(n,i)}const t=this.get(e);return t==null?W.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 Oi(this.series.filter((t,n)=>this.columns[n]===e))}push(e,...t){if(e instanceof _){if(this.colType!==null&&e.colType!==this.colType)throw new M("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 M("keyVariant must match");if(typeof e!="string"&&this.colType==="name")throw new M("keyVariant must match");this.columns.push(...Array.from({length:t.length},()=>e))}}concat(e){return new _([...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 _;return this.forEach((n,i,a)=>t.push(...e(n,i,a))),t}forEach(e){this.columns.forEach((t,n)=>{const i=this.series[n];e(t,i,n)})}at(e,t=!1){const n={};return this.uniqueColumns.forEach(i=>{n[i]=this.get(i).at(e,t)}),n}filter(e){const t=new _;return this.columns.forEach((n,i)=>{const a=this.series[i];e(n,a,i)&&t.push(n,a)}),t}get byteLength(){return new ot(this.series.reduce((e,t)=>e.add(t.byteLength),ot.ZERO))}get length(){return this.series.reduce((e,t)=>e+t.length,0)}}const kr=s.z.object({keys:s.z.union([s.z.null().transform(()=>[]),s.z.number().array().optional().default([])]),series:s.z.union([s.z.null().transform(()=>[]),ze.crudeZ.array().optional().default([])])}),Xi=r=>{const{dataType:e,data:t,timeRange:n,alignment:i}=r;return new ze({data:t,dataType:e,timeRange:n,glBufferUsage:"static",alignment:i})},Qi=r=>({timeRange:r._timeRange,dataType:r.dataType,data:new Uint8Array(r.data.buffer),alignment:r.alignment});class $r{constructor(e){c(this,"adapter");c(this,"retriever");c(this,"keys");this.retriever=e,this.adapter=null,this.keys=[]}static async open(e,t){const n=new $r(e);return await n.update(t),n}async update(e){const{variant:t,normalized:n}=be(e);if(t==="keys"){this.adapter=null,this.keys=n;return}const i=await this.retriever.retrieve(n),a=new Map;this.adapter=a,n.forEach(o=>{const l=i.find(u=>u.name===o);if(l==null)throw new Error(`Channel ${o} not found`);a.set(l.key,l.name)}),this.keys=Array.from(this.adapter.keys())}adapt(e){if(this.adapter==null)return e;const t=this.adapter;return e.map((n,i)=>{if(typeof n=="number"){const a=t.get(n);if(a==null)throw new Error(`Channel ${n} not found`);return[a,i]}return[n,i]})}}class $n{constructor(e){c(this,"adapter");c(this,"retriever");c(this,"keys");this.retriever=e,this.adapter=null,this.keys=[]}static async open(e,t){const n=new $n(e);return await n.update(t),n}async adaptObjectKeys(e){const t={};for(const[n,i]of Object.entries(e))t[await this.adaptToKey(n)]=i;return t}async update(e){const t=await qi(this.retriever,e);this.adapter=new Map(t.map(n=>[n.name,n.key])),this.keys=t.map(n=>n.key)}async fetchChannel(e){const t=await this.retriever.retrieve(e);if(t.length===0)throw new Error(`Channel ${e} not found`);return t[0]}async adaptToKey(e){return typeof e=="number"?e:(await this.fetchChannel(e)).key}async adapt(e,t){if(typeof e=="string"||typeof e=="number"){if(t==null)throw new M(` Received a single channel name or key but no series. `);if(Array.isArray(t)){if(t.some(u=>u instanceof ze||Array.isArray(u)))throw new M(` Received a single channel name or key but multiple series. `);t=t}const o=await this.fetchChannel(e),l=new ze({data:t,dataType:o.dataType});return new _(o.key,l)}if(Array.isArray(e)){if(t==null)throw new M(` Received an array of channel names or keys but no series. `);if(!Array.isArray(t))throw new M(` Received an array of channel names or keys but no array of series. `);const o=[],l=[];for(let u=0;u=t.length)throw new M(` Received an array of channel names or keys but not enough series. `);const y=new ze({data:t[u],dataType:h.dataType});o.push(h.key),l.push(y)}return new _(o,l)}if(e instanceof _||e instanceof Map){const o=new _(e);if(this.adapter==null)return o;const l=o.columns.map(u=>{var y;const h=typeof u=="string"?(y=this.adapter)==null?void 0:y.get(u):u;if(h==null)throw new M(` Channel ${u} was not provided in the list of channels when opening the writer `);return h});return new _(l,o.series)}const n=[],i=[],a=Object.entries(e);for(let o=0;o(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))(Rn||{}),ea=(r=>(r[r.None=0]="None",r[r.Ack=1]="Ack",r[r.Data=2]="Data",r))(ea||{});const Wh=s.z.object({command:s.z.nativeEnum(Rn),span:I.z.optional(),bounds:W.z.optional(),stamp:S.z.optional(),keys:s.z.number().array().optional(),chunkSize:s.z.number().optional()}),Gh=s.z.object({variant:s.z.nativeEnum(ea),ack:s.z.boolean(),command:s.z.nativeEnum(Rn),error:Zt.optional().nullable(),frame:kr.optional()}),xt=class xt{constructor(e,t){c(this,"stream");c(this,"adapter");c(this,"value");this.stream=new An("Iterator",e),this.value=new _,this.adapter=t}static async _open(e,t,n,i,a={}){const o=await $r.open(n,t),l=await i.stream(xt.ENDPOINT,Wh,Gh),u=new xt(l,o);return await u.execute({command:0,keys:o.keys,bounds:new W(e),chunkSize:a.chunkSize??1e5}),u}async next(e=vn){return await this.execute({command:1,span:new I(e)})}async prev(e=vn){return await this.execute({command:2,span:new I(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 S(e)})}async seekGE(e){return await this.execute({command:6,stamp:new S(e)})}async valid(){return await this.execute({command:7})}async close(){await this.stream.closeAndAck()}[Symbol.asyncIterator](){return new Vh(this)}async execute(e){for(this.stream.send(e),this.value=new _;;){const t=await this.stream.receive();if(t.variant===1)return t.ack;this.value.push(this.adapter.adapt(new _(t.frame)))}}};c(xt,"ENDPOINT","/frame/iterate");let wr=xt;class Vh{constructor(e){c(this,"iter");c(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 Fh=s.z.object({keys:s.z.number().array(),downsampleFactor:s.z.number()}),Jh=s.z.object({frame:kr,error:Zt.optional().nullable()}),Kh="/frame/stream";class Ar{constructor(e,t){c(this,"stream");c(this,"adapter");c(this,"downsampleFactor");this.stream=new An("Streamer",e),this.adapter=t,this.downsampleFactor=1}get keys(){return this.adapter.keys}static async _open(e,t,{channels:n,downsampleFactor:i}){const a=await $r.open(e,n),o=await t.stream(Kh,Fh,Jh),l=new Ar(o,a);o.send({keys:a.keys,downsampleFactor:i??1});const[,u]=await o.receive();if(u!=null)throw u;return l}async next(){try{return{done:!1,value:await this.read()}}catch(e){if(Se.matches(e))return{done:!0,value:void 0};throw e}}async read(){return this.adapter.adapt(new _((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 je extends Pe.Observer{constructor(t,n){super(n);c(this,"streamer");c(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)}}var xn=(r=>(r[r.Open=0]="Open",r[r.Write=1]="Write",r[r.Commit=2]="Commit",r[r.Error=3]="Error",r[r.SetAuthority=4]="SetAuthority",r))(xn||{}),ut=(r=>(r[r.PersistStream=1]="PersistStream",r[r.Persist=2]="Persist",r[r.Stream=3]="Stream",r))(ut||{});const Hh=r=>{switch(r){case"persist":return 2;case"stream":return 3;case"persistStream":return 1;default:if(typeof r=="number"&&r in ut)return r;throw new Error(`invalid writer mode: ${r}`)}},Xh=new I(-1),Qh=s.z.object({start:S.z.optional(),controlSubject:ct.subjectZ.optional(),keys:s.z.number().array().optional(),authorities:ct.Authority.z.array().optional(),mode:s.z.nativeEnum(ut).optional(),errOnUnauthorized:s.z.boolean().optional(),enableAutoCommit:s.z.boolean().optional(),autoIndexPersistInterval:I.z.optional()}),ed=s.z.object({command:s.z.nativeEnum(xn),config:Qh.optional(),frame:kr.optional()}),td=s.z.object({ack:s.z.boolean(),command:s.z.nativeEnum(xn),error:Zt.optional().nullable()});var Ee;let ta=(Ee=class{constructor(e,t){c(this,"stream");c(this,"adapter");this.stream=new An("Writer",e),this.adapter=t}static async _open(e,t,{channels:n,start:i=S.now(),authorities:a=ct.Authority.Absolute,controlSubject:o,mode:l=1,errOnUnauthorized:u=!1,enableAutoCommit:h=!1,autoIndexPersistInterval:y=I.SECOND}){const d=await $n.open(e,n),P=await t.stream(Ee.ENDPOINT,ed,td),D=new Ee(P,d);return await D.execute({command:0,config:{start:new S(i),keys:d.keys,controlSubject:o,authorities:b(a),mode:Hh(l),errOnUnauthorized:u,enableAutoCommit:h,autoIndexPersistInterval:y}}),D}async write(e,t){const n=await this.adapter.adapt(e,t);return this.stream.send({command:1,frame:n.toPayload()}),!0}async setAuthority(e,t){let n;if(typeof e=="number"&&t==null)n={keys:[],authorities:[e]};else{let a;typeof e=="string"||typeof e=="number"?a={[e]:t}:a=e,a=await this.adapter.adaptObjectKeys(a),n={keys:Object.keys(a).map(o=>Number(o)),authorities:Object.values(a)}}return(await this.execute({command:4,config:n})).ack}async commit(){return this.errorAccumulated?!1:(await this.execute({command:2})).ack}async error(){this.stream.send({command:3});const e=await this.execute({command:3});return e.error!=null?En(e.error):null}async close(){await this.stream.closeAndAck()}async execute(e){for(this.stream.send(e);;){const t=await this.stream.receive();if(t.command===e.command)return t;console.warn("writer received unexpected response",t)}}get errorAccumulated(){return this.stream.received()}},c(Ee,"ENDPOINT","/frame/write"),Ee);const ra="framer",rd=r=>new v({type:ra,key:r.toString()});let na=class{constructor(e,t,n){c(this,"streamClient");c(this,"retriever");c(this,"deleter");this.streamClient=e,this.retriever=n,this.deleter=new qh(t)}async openIterator(e,t,n){return await wr._open(e,t,this.retriever,this.streamClient,n)}async openWriter(e){return(Array.isArray(e)||typeof e!="object")&&(e={channels:e}),await ta._open(this.retriever,this.streamClient,e)}async openStreamer(e){return(Array.isArray(e)||typeof e!="object")&&(e={channels:e,downsampleFactor:1}),await Ar._open(this.retriever,this.streamClient,e)}async write(e,t,n){if(n==null){const a=t,o=await this.openWriter({start:e,channels:Object.keys(a),mode:ut.Persist});try{await o.write(a),await o.commit()}finally{await o.close()}return}const i=await this.openWriter({start:e,channels:t,mode:ut.Persist,errOnUnauthorized:!0,enableAutoCommit:!0,autoIndexPersistInterval:I.MAX});try{await i.write(t,n)}finally{await i.close()}}async read(e,t){const{single:n}=be(t),i=await this.readFrame(e,t);return n?i.get(t):i}async readFrame(e,t){const n=await this.openIterator(e,t),i=new _;try{for await(const a of n)i.push(a)}finally{await n.close()}return i}async delete(e,t){const{normalized:n,variant:i}=be(e);return i==="keys"?await this.deleter.delete({keys:n,bounds:t}):await this.deleter.delete({names:n,bounds:t})}};const nd=Object.freeze(Object.defineProperty({__proto__:null,ALWAYS_INDEX_PERSIST_ON_AUTO_COMMIT:Xh,AUTO_SPAN:vn,Client:na,Frame:_,Iterator:wr,ONTOLOGY_TYPE:ra,ObservableStreamer:je,Streamer:Ar,Writer:ta,WriterMode:ut,frameZ:kr,ontologyID:rd,seriesFromPayload:Xi,seriesToPayload:Qi},Symbol.toStringTag,{value:"Module"})),sd=ct.Authority,id=ct.stateZ(s.z.number()),ad=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()})`};class sa extends je{constructor(t){super(t,n=>{const i=this.codec.decode(n.series[0].data);return this.merge(i),[i.transfers,!0]});c(this,"states");c(this,"codec");this.states=new Map,this.codec=new ht.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 od="sy_node_1_control";let ia=class{constructor(e){c(this,"framer");this.framer=e}async openStateTracker(){const e=await this.framer.openStreamer(od);return new sa(e)}};const cd=Object.freeze(Object.defineProperty({__proto__:null,Authority:sd,Client:ia,StateTracker:sa,stateZ:id,transferString:ad},Symbol.toStringTag,{value:"Module"}));let aa=class{constructor(e,t,n){c(this,"tasks");c(this,"racks");c(this,"devices");this.tasks=e,this.racks=t,this.devices=n}};const ld=Object.freeze(Object.defineProperty({__proto__:null,Client:aa},Symbol.toStringTag,{value:"Module"})),ft=s.z.number(),Rr=s.z.object({key:ft,name:s.z.string()}),oa=Rr.partial({key:!0}),ca="rack",ud=r=>new v({type:ca,key:r.toString()}),xr=s.z.string(),Vt=s.z.object({key:xr,rack:ft,name:s.z.string(),make:s.z.string(),model:s.z.string(),location:s.z.string(),configured:s.z.boolean().optional(),properties:s.z.record(s.z.unknown()).or(s.z.string().transform(r=>r===""?{}:ht.JSON_CODEC.decodeString(r)))}),la=Vt.extend({properties:s.z.unknown().transform(r=>ht.JSON_CODEC.encodeString(r))}),ua="device",hd=r=>new v({type:ua,key:r.toString()}),Me=async(r,e,t,n)=>{const i=await r.openStreamer([e,t]),a=o=>{const l=[];return t!=null&&l.push(...o.get(t).series.flatMap(u=>n("delete",u))),e!=null&&l.push(...o.get(e).series.flatMap(u=>n("set",u))),[l,l.length>0]};return new je(i,a)},dd=Object.freeze(Object.defineProperty({__proto__:null,openObservable:Me},Symbol.toStringTag,{value:"Module"})),yd="sy_device_set",fd="sy_device_delete",Kr="/hardware/device/retrieve",gd="/hardware/device/create",pd="/hardware/device/delete",md=s.z.object({devices:la.array()}),wd=s.z.object({devices:Vt.array()}),bd=s.z.object({keys:xr.array()}),vd=s.z.object({}),Hr=s.z.object({search:s.z.string().optional(),limit:s.z.number().optional(),offset:s.z.number().optional(),keys:xr.array().optional(),names:s.z.string().array().optional(),makes:s.z.string().array().optional()}),Xr=s.z.object({devices:te(Vt)});let ha=class{constructor(e,t){c(this,"type","device");c(this,"client");c(this,"frameClient");this.client=e,this.frameClient=t}async retrieve(e,t){const n=!Array.isArray(e),i=await w(this.client,Kr,{keys:b(e),...t},Hr,Xr);return Ir("Device",e,i.devices,n),n?i.devices[0]:i.devices}async search(e,t){return(await w(this.client,Kr,{search:e,...t},Hr,Xr)).devices}async page(e,t,n){return(await w(this.client,Kr,{offset:e,limit:t,...n},Hr,Xr)).devices}async create(e){const t=!Array.isArray(e),n=await w(this.client,gd,{devices:b(e)},md,wd);return t?n.devices[0]:n.devices}async delete(e){await w(this.client,pd,{keys:b(e)},bd,vd)}async openDeviceTracker(){return await Me(this.frameClient,yd,fd,Td)}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 Td=(r,e)=>r==="delete"?e.toStrings().map(t=>({variant:r,key:t,value:void 0})):e.parseJSON(Vt).map(t=>({variant:r,key:t.key,value:t})),Od=Object.freeze(Object.defineProperty({__proto__:null,Client:ha,ONTOLOGY_TYPE:ua,deviceKeyZ:xr,deviceZ:Vt,newDeviceZ:la,ontologyID:hd},Symbol.toStringTag,{value:"Module"})),Qr="/hardware/rack/retrieve",zd="/hardware/rack/create",Ed="/hardware/rack/delete",en=s.z.object({keys:ft.array().optional(),names:s.z.string().array().optional(),search:s.z.string().optional(),offset:s.z.number().optional(),limit:s.z.number().optional()}),tn=s.z.object({racks:te(Rr)}),Nd=s.z.object({racks:oa.array()}),Sd=s.z.object({racks:Rr.array()}),Id=s.z.object({keys:ft.array()}),kd=s.z.object({});let da=class{constructor(e,t,n){c(this,"type","rack");c(this,"client");c(this,"frameClient");c(this,"tasks");this.client=e,this.frameClient=t,this.tasks=n}async delete(e){await w(this.client,Ed,{keys:b(e)},Id,kd)}async create(e){const t=!Array.isArray(e),n=await w(this.client,zd,{racks:b(e)},Nd,Sd),i=this.sugar(n.racks);return t?i[0]:i}async search(e){const t=await w(this.client,Qr,{search:e},en,tn);return this.sugar(t.racks)}async page(e,t){const n=await w(this.client,Qr,{offset:e,limit:t},en,tn);return this.sugar(n.racks)}async retrieve(e){const{variant:t,normalized:n,single:i}=Sr(e,{string:"names",number:"keys"}),a=await w(this.client,Qr,{[t]:n},en,tn),o=this.sugar(a.racks);return Ir("Rack",e,o,i),i?o[0]:o}sugar(e){return e.map(({key:t,name:n})=>new ya(t,n,this.tasks))}};class ya{constructor(e,t,n){c(this,"key");c(this,"name");c(this,"tasks");this.key=e,this.name=t,this.tasks=n}async listTasks(){return await this.tasks.retrieve(this.key)}async retrieveTaskByName(e){return await this.tasks.retrieveByName(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 $d=Object.freeze(Object.defineProperty({__proto__:null,Client:da,ONTOLOGY_TYPE:ca,Rack:ya,newRackZ:oa,ontologyID:ud,rackKeyZ:ft,rackZ:Rr},Symbol.toStringTag,{value:"Module"})),Be=s.z.union([s.z.string(),s.z.bigint().transform(r=>r.toString()),s.z.number().transform(r=>r.toString())]),Mt=s.z.object({task:Be,variant:s.z.string(),key:s.z.string().optional(),details:s.z.record(s.z.unknown()).or(s.z.string().transform(r=>r===""?{}:JSON.parse(r))).or(s.z.array(s.z.unknown())).or(s.z.null())}),Ft=s.z.object({key:Be,name:s.z.string(),type:s.z.string(),internal:s.z.boolean().optional(),config:s.z.record(s.z.unknown()).or(s.z.string().transform(r=>r===""?{}:ht.JSON_CODEC.decodeString(r))),state:Mt.optional().nullable(),snapshot:s.z.boolean().optional()}),fa=Ft.omit({key:!0}).extend({key:Be.transform(r=>r.toString()).optional(),config:s.z.unknown().transform(r=>ht.JSON_CODEC.encodeString(r))}),Cn=s.z.object({task:Be,type:s.z.string(),key:s.z.string(),args:s.z.record(s.z.unknown()).or(s.z.string().transform(r=>r===""?{}:JSON.parse(r))).or(s.z.array(s.z.unknown())).or(s.z.null()).optional()}),ga="task",Ad=r=>new v({type:ga,key:r.toString()}),Rt="sy_task_state",Ye="sy_task_cmd",pt=new Error("Task not created");class pa{constructor(e,t,n,i,a=!1,o=!1,l,u=null,h=null,y=null){c(this,"key");c(this,"name");c(this,"internal");c(this,"type");c(this,"config");c(this,"snapshot");c(this,"state");c(this,"frameClient");c(this,"ontologyClient");c(this,"rangeClient");this.key=e,this.name=t,this.type=n,this.config=i,this.internal=a,this.snapshot=o,l!==null&&(this.state=l),this.frameClient=u,this.ontologyClient=h,this.rangeClient=y}get payload(){return{key:this.key,name:this.name,type:this.type,config:this.config,state:this.state,internal:this.internal}}get ontologyID(){return new v({type:"task",key:this.key})}async executeCommand(e,t){if(this.frameClient==null)throw pt;const n=await this.frameClient.openWriter(Ye),i=xl.id();return await n.write(Ye,[{task:this.key,type:e,key:i,args:t}]),await n.close(),i}async executeCommandSync(e,t,n){if(this.frameClient==null)throw pt;const i=await this.frameClient.openStreamer(Rt),a=await this.executeCommand(e,t);let o;const l=new Promise(u=>setTimeout(()=>u(!1),new I(n).milliseconds));for(;;){const u=await Promise.any([i.read(),l]);if(u===!1)throw new Error("Command timed out");const h=Mt.safeParse(u.at(-1).sy_task_state);if(h.success){if(o=h.data,o.key===a)break}else console.error(h.error)}return i.close(),o}async openStateObserver(){if(this.frameClient==null)throw pt;return new je(await this.frameClient.openStreamer(Rt),e=>{const t=e.get(Rt);if(t.length===0)return[null,!1];const n=Mt.safeParse(t.at(-1));if(!n.success)return console.error(n.error),[null,!1];const i=n.data;return i.task!==this.key?[null,!1]:[i,!0]})}async openCommandObserver(){if(this.frameClient==null)throw pt;return new je(await this.frameClient.openStreamer(Ye),e=>{const t=e.get(Ye);if(t.length===0)return[null,!1];const n=Cn.safeParse(t.at(-1));if(!n.success)return console.error(n.error),[null,!1];const i=n.data;return i.task!==this.key?[null,!1]:[i,!0]})}async snapshottedTo(){if(this.ontologyClient==null||this.rangeClient==null)throw pt;if(!this.snapshot)return null;const e=await this.ontologyClient.retrieveParents(this.ontologyID);return e.length==0?null:e[0]}}const Rd=s.z.object({rack:ft.optional(),keys:s.z.string().array().optional(),names:s.z.string().array().optional(),offset:s.z.number().optional(),limit:s.z.number().optional(),includeState:s.z.boolean().optional()}),xd=s.z.object({tasks:te(Ft)}),Cd="/hardware/task/retrieve",Pd="/hardware/task/create",Dd="/hardware/task/delete",jd="/hardware/task/copy",Md=s.z.object({tasks:fa.array()}),Bd=s.z.object({tasks:Ft.array()}),Zd=s.z.object({keys:Be.array()}),Ud=s.z.object({}),Ld=s.z.object({key:Be,name:s.z.string(),snapshot:s.z.boolean()}),_d=s.z.object({task:Ft});let ma=class{constructor(e,t,n,i){c(this,"type","task");c(this,"client");c(this,"frameClient");c(this,"ontologyClient");c(this,"rangeClient");this.client=e,this.frameClient=t,this.ontologyClient=n,this.rangeClient=i}async create(e){const t=!Array.isArray(e),n=await w(this.client,Pd,{tasks:b(e)},Md,Bd),i=this.sugar(n.tasks);return t?i[0]:i}async delete(e){await w(this.client,Dd,{keys:b(e)},Zd,Ud)}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:i,variant:a}=Sr(e,{number:"rack",string:"keys"},{convertNumericStrings:!1}),o={...t};a==="rack"?o.rack=e:o.keys=i;const l=await this.execRetrieve(o),u=this.sugar(l);return n&&a!=="rack"?u[0]:u}async copy(e,t,n){const i=await w(this.client,jd,{key:e,name:t,snapshot:n},Ld,_d);return this.sugar([i.task])[0]}async retrieveByName(e,t){const n=await this.execRetrieve({names:[e],rack:t});return Ir("Task",e,n,!0),this.sugar(n)[0]}async execRetrieve(e){return(await w(this.client,Cd,e,Rd,xd)).tasks}sugar(e){return e.map(({key:t,name:n,type:i,config:a,state:o,internal:l,snapshot:u})=>new pa(t,n,i,a,l,u,o,this.frameClient,this.ontologyClient,this.rangeClient))}async openTracker(){return await Me(this.frameClient,"sy_task_set","sy_task_delete",(e,t)=>Array.from(t).map(n=>({variant:e,key:n.toString(),value:n.toString()})))}async openStateObserver(){return new je(await this.frameClient.openStreamer(Rt),e=>{const t=e.get(Rt);if(t.length===0)return[null,!1];const n=Mt.safeParse(t.at(-1));return n.success?[n.data,!0]:(console.error(n.error),[null,!1])})}async openCommandObserver(){return new je(await this.frameClient.openStreamer(Ye),e=>{const t=e.get(Ye);if(t.length===0)return[null,!1];const n=Cn.safeParse(t.at(-1));return n.success?[n.data,!0]:(console.error(n.error),[null,!1])})}};const Yd=Object.freeze(Object.defineProperty({__proto__:null,Client:ma,ONTOLOGY_TYPE:ga,Task:pa,commandZ:Cn,newTaskZ:fa,ontologyID:Ad,stateZ:Mt,taskKeyZ:Be,taskZ:Ft},Symbol.toStringTag,{value:"Module"})),gt=s.z.string().uuid(),Jt=s.z.object({key:gt,name:s.z.string().min(1),color:s.z.string()}),wa="label",qd=r=>new v({type:wa,key:r}),Wd=s.z.object({keys:gt.array().optional(),for:H.optional(),search:s.z.string().optional(),offset:s.z.number().optional(),limit:s.z.number().optional()}),Gd=s.z.object({labels:te(Jt)});var Ae;let ba=(Ae=class{constructor(e){c(this,"client");this.client=e}async retrieve(e){const t=b(e);return await this.execute({keys:t})}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(Ae.ENDPOINT,e,Wd,Gd);if(n!=null)throw n;return t.labels}},c(Ae,"ENDPOINT","/label/retrieve"),Ae);const va=Jt.extend({key:gt.optional()}),Vd=s.z.object({labels:va.array()}),Fd=s.z.object({labels:Jt.array()}),Jd=s.z.object({keys:gt.array()}),Ta=s.z.object({id:H,labels:gt.array(),replace:s.z.boolean().optional()}),Kd=Ta.omit({replace:!0}),rn=s.z.object({}),Hd="/label/create",Xd="/label/delete",Qd="/label/set",ey="/label/remove";let Oa=class{constructor(e){c(this,"client");this.client=e}async create(e){return(await w(this.client,Hd,{labels:b(e)},Vd,Fd)).labels}async delete(e){await w(this.client,Xd,{keys:b(e)},Jd,rn)}async set(e,t,{replace:n}={}){await w(this.client,Qd,{id:e,labels:t,replace:n},Ta,rn)}async remove(e,t){await w(this.client,ey,{id:e,labels:t},Kd,rn)}};const ty="sy_label_set",ry="sy_label_delete";let za=class{constructor(e,t,n){c(this,"type","label");c(this,"retriever");c(this,"writer");c(this,"frameClient");c(this,"ontology");this.writer=new Oa(e),this.retriever=new ba(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 v(e))}async label(e,t,n={}){await this.writer.set(new v(e),t,n)}async removeLabels(e,t){await this.writer.remove(new v(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 Me(this.frameClient,ty,ry,ny)}async trackLabelsOf(e){const t=new Pe.Observer,n=(await this.retrieveFor(e)).map(a=>({id:new v({key:a.key,type:"label"}),key:a.key,name:a.name,data:a}));return(await this.ontology.openDependentTracker({target:new v(e),dependents:n,relationshipType:"labeled_by"})).onChange(a=>t.notify(a.map(o=>{var l,u;return{key:o.id.key,color:(l=o.data)==null?void 0:l.color,name:(u=o.data)==null?void 0:u.name}}))),t}};const ny=(r,e)=>r==="delete"?e.toUUIDs().map(t=>({variant:r,key:t})):e.parseJSON(Jt).map(t=>({variant:r,key:t.key,value:t})),sy=Object.freeze(Object.defineProperty({__proto__:null,Client:za,ONTOLOGY_TYPE:wa,Retriever:ba,Writer:Oa,keyZ:gt,labelZ:Jt,newLabelPayloadZ:va,ontologyID:qd},Symbol.toStringTag,{value:"Module"})),Q=s.z.string().uuid(),Kt=s.z.object({key:Q,name:s.z.string().min(1),timeRange:W.z,color:s.z.string().optional()}),Ea=Kt.extend({key:s.z.string().uuid().optional()}),Na=r=>{const e=b(r),t=e.length===0;let n=!1;return t||(n=Q.safeParse(e[0]).success),{single:!Array.isArray(r),variant:n?"keys":"names",normalized:e,actual:r,empty:t}},Sa="range",Ia="range-alias",iy=r=>new v({type:Sa,key:r}),ay=r=>new v({type:Ia,key:r}),oy="sy_range_alias_set",cy="sy_range_alias_delete",ly=s.z.object({range:Q,aliases:s.z.string().array()}),uy=s.z.object({aliases:s.z.record(s.z.string(),ke)}),hy=s.z.object({range:Q,aliases:s.z.record(ke.or(s.z.string()),s.z.string())}),dy=s.z.unknown(),yy=s.z.object({range:Q,channels:ke.array()}),fy=s.z.unknown(),gy=s.z.object({range:Q}),py=s.z.object({aliases:s.z.record(s.z.string(),s.z.string())}),he=class he{constructor(e,t,n){c(this,"frameClient");c(this,"cache",new Map);c(this,"client");c(this,"rangeKey");this.rangeKey=e,this.cache=new Map,this.client=n,this.frameClient=t}async resolve(e){const t=[],n=typeof e=="string",i={};if(n){const o=this.cache.get(e);if(o!=null)return o;t.push(e)}else e.forEach(o=>{const l=this.cache.get(o);l!=null?i[o]=l:t.push(o)});if(t.length===0)return i;const a=await w(this.client,he.RESOLVE_ENDPOINT,{range:this.rangeKey,aliases:t},ly,uy);return Object.entries(a.aliases).forEach(([o,l])=>this.cache.set(o,l)),n?a.aliases[t[0]]:{...i,...a.aliases}}async set(e){await w(this.client,he.SET_ENDPOINT,{range:this.rangeKey,aliases:e},hy,dy)}async list(){return(await w(this.client,he.LIST_ENDPOINT,{range:this.rangeKey},gy,py)).aliases}async delete(e){await w(this.client,he.DELETE_ENDPOINT,{range:this.rangeKey,channels:e},yy,fy)}async openChangeTracker(){return await Me(this.frameClient,oy,cy,by(this.rangeKey))}};c(he,"SET_ENDPOINT","/range/alias/set"),c(he,"RESOLVE_ENDPOINT","/range/alias/resolve"),c(he,"LIST_ENDPOINT","/range/alias/list"),c(he,"DELETE_ENDPOINT","/range/alias/delete");let Tn=he;const my=s.z.object({range:Q,channel:ke,alias:s.z.string()}),wy="---",by=r=>(e,t)=>e==="delete"?t.toStrings().filter(n=>n.split(wy)[0]===r).map(n=>({variant:e,key:n,value:void 0})):t.parseJSON(my).map(n=>({variant:e,key:n.alias,value:n})),vy=s.z.object({range:Q,keys:s.z.string().array()}),Pn=s.z.object({range:Q,key:s.z.string(),value:s.z.string()}),Ty=s.z.object({pairs:te(Pn)}),Oy=s.z.object({range:Q,pairs:Pn.array()}),zy=s.z.object({range:Q,keys:s.z.string().array()}),Oe=class Oe{constructor(e,t,n){c(this,"rangeKey");c(this,"client");c(this,"frameClient");this.rangeKey=e,this.client=t,this.frameClient=n}async get(e){const t=await w(this.client,Oe.GET_ENDPOINT,{range:this.rangeKey,keys:b(e)},vy,Ty);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;Nn(e)?n=Object.entries(e).map(([i,a])=>({range:this.rangeKey,key:i,value:a})):n=[{range:this.rangeKey,key:e,value:t}],await w(this.client,Oe.SET_ENDPOINT,{range:this.rangeKey,pairs:n},Oy,s.z.unknown())}async delete(e){await w(this.client,Oe.DELETE_ENDPOINT,{range:this.rangeKey,keys:b(e)},zy,s.z.unknown())}async openTracker(){return await Me(this.frameClient,"sy_range_kv_set","sy_range_kv_delete",(e,t)=>e==="delete"?t.toStrings().map(n=>{const[i,a]=n.split("<--->",2);return{variant:e,key:n,value:{range:i,key:a,value:""}}}):t.parseJSON(Pn).map(n=>({variant:e,key:`${n.range}${n.key}`,value:n})))}};c(Oe,"GET_ENDPOINT","/range/kv/get"),c(Oe,"SET_ENDPOINT","/range/kv/set"),c(Oe,"DELETE_ENDPOINT","/range/kv/delete");let Bt=Oe;const nn=r=>new v({type:"range",key:r});class ka{constructor(e,t=W.ZERO,n,i,a,o,l,u,h,y,d){c(this,"key");c(this,"name");c(this,"kv");c(this,"timeRange");c(this,"color");c(this,"channels");c(this,"aliaser");c(this,"frameClient");c(this,"labelClient");c(this,"ontologyClient");c(this,"rangeClient");this.key=n,this.name=e,this.timeRange=t,this.frameClient=a,this.color=i,this.kv=o,this.aliaser=l,this.channels=u,this.labelClient=h,this.ontologyClient=y,this.rangeClient=d}get ontologyID(){return new v({key:this.key,type:"range"})}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 re(`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(nn(this.key))}async addLabel(...e){await this.labelClient.label(nn(this.key),e)}async removeLabel(...e){await this.labelClient.removeLabels(nn(this.key),e)}async openChildRangeTracker(){const e=new Pe.Observer,t=(await this.retrieveChildren()).map(i=>{const a=new v({key:i.key,type:"range"});return{id:a,key:a.toString(),name:i.name,data:i.payload}}),n=await this.ontologyClient.openDependentTracker({target:this.ontologyID,dependents:t,resourceType:"range"});return n.onChange(i=>e.notify(this.rangeClient.resourcesToRanges(i))),e.setCloser(async()=>await n.close()),e}async openParentRangeTracker(){const e=new Pe.Observer,t=await this.retrieveParent();if(t==null)return null;const n=new v({key:t.key,type:"range"}),i={id:n,key:n.toString(),name:t.name,data:t.payload},a=await this.ontologyClient.openDependentTracker({target:this.ontologyID,dependents:[i],relationshipDirection:"to"});return a.onChange(o=>{const l=this.rangeClient.resourcesToRanges(o);if(l.length===0)return;const u=l[0];e.notify(u)}),e.setCloser(async()=>await a.close()),e}}const Ey=s.z.object({keys:Q.array().optional(),names:s.z.array(s.z.string()).optional(),term:s.z.string().optional(),overlapsWith:W.z.optional(),limit:s.z.number().int().optional(),offset:s.z.number().int().optional()}),Ny="/range/retrieve",Sy=s.z.object({ranges:te(Kt)});let $a=class{constructor(e,t,n,i,a,o){c(this,"type","range");c(this,"frameClient");c(this,"writer");c(this,"unaryClient");c(this,"channels");c(this,"labelClient");c(this,"ontologyClient");this.frameClient=e,this.writer=t,this.unaryClient=n,this.channels=i,this.labelClient=a,this.ontologyClient=o}async create(e,t){const n=!Array.isArray(e),i=this.sugarMany(await this.writer.create(b(e),t));return n?i[0]:i}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 W(e)});const{single:t,actual:n,variant:i,normalized:a,empty:o}=Na(e);if(o)return[];const l=await this.execRetrieve({[i]:a});if(!t)return l;if(l.length===0)throw new me(`range matching ${n} not found`);if(l.length>1)throw new we(`multiple ranges matching ${n} found`);return l[0]}getKV(e){return new Bt(e,this.unaryClient,this.frameClient)}async execRetrieve(e){const{ranges:t}=await w(this.unaryClient,Ny,e,Ey,Sy);return this.sugarMany(t)}async retrieveParent(e){const t=await this.ontologyClient.retrieveParents({key:e,type:"range"});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 ka(e.name,e.timeRange,e.key,e.color,this.frameClient,new Bt(e.key,this.unaryClient,this.frameClient),new Tn(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 Me(this.frameClient,"sy_range_set","sy_range_delete",(e,t)=>e==="delete"?t.toStrings().map(i=>({variant:e,key:i,value:void 0})):this.sugarMany(t.parseJSON(Kt)).map(i=>({variant:e,key:i.key,value:i})))}resourcesToRanges(e){return e.map(t=>this.resourceToRange(t))}resourceToRange(e){var t,n,i;return this.sugarOne({key:e.id.key,name:(t=e.data)==null?void 0:t.name,timeRange:new W((n=e.data)==null?void 0:n.timeRange),color:(i=e.data)==null?void 0:i.color})}};const Iy=s.z.object({ranges:Kt.array()}),ky=s.z.object({parent:H.optional(),ranges:Ea.array()}),$y=s.z.object({keys:Q.array()}),Ay=s.z.object({}),Ry=s.z.object({key:Q,name:s.z.string()}),xy=s.z.object({}),Cy="/range/create",Py="/range/delete",Dy="/range/rename";let Aa=class{constructor(e){c(this,"client");this.client=e}async rename(e,t){await w(this.client,Dy,{key:e,name:t},Ry,xy)}async create(e,t){return(await w(this.client,Cy,{ranges:e,...t},ky,Iy)).ranges}async delete(e){await w(this.client,Py,{keys:e},$y,Ay)}};const jy=Object.freeze(Object.defineProperty({__proto__:null,ALIAS_ONTOLOGY_TYPE:Ia,Client:$a,KV:Bt,ONTOLOGY_TYPE:Sa,Range:ka,Writer:Aa,analyzeParams:Na,keyZ:Q,newPayloadZ:Ea,payloadZ:Kt,rangeAliasOntologyID:ay,rangeOntologyID:iy},Symbol.toStringTag,{value:"Module"})),My="/api/v1/";class By{constructor(e,t=!1){c(this,"url");c(this,"unary");c(this,"stream");c(this,"secure");this.secure=t,this.url=e.child(My);const n=new ht.JSONCodec;this.unary=new wc(this.url,n,this.secure),this.stream=new Ic(this.url,n,this.secure)}use(...e){this.unary.use(...e),this.stream.use(...e)}}const Cr=s.z.string().uuid(),Pr=s.z.object({key:s.z.string(),name:s.z.string(),data:Ut.or(s.z.string().transform(r=>JSON.parse(r)))}),Ra="lineplot",Zy=r=>new v({type:Ra,key:r}),Uy=s.z.object({keys:s.z.string().array()}),Ly=s.z.object({linePlots:Pr.array()});let _y=class{constructor(e){c(this,"ENDPOINT","/workspace/lineplot/retrieve");c(this,"client");this.client=e}async retrieve(e){const t=b(e);return(await w(this.client,this.ENDPOINT,{keys:t},Uy,Ly)).linePlots}};const de=s.z.string().uuid(),xa=r=>JSON.parse(r),Dn=s.z.object({name:s.z.string(),key:de,layout:Ut.or(s.z.string().transform(r=>xa(r)))}),jn=Dn.omit({layout:!0}).extend({layout:s.z.string().transform(r=>xa(r))}),Ca="workspace",Yy=r=>new v({type:Ca,key:r}),qy=Pr.partial({key:!0}).transform(r=>({...r,data:JSON.stringify(r.data)})),Wy=s.z.object({workspace:de,linePlots:qy.array()}),Gy=s.z.object({linePlots:Pr.array()}),Vy=s.z.object({keys:Cr.array()}),Fy=s.z.object({}),Jy=s.z.object({key:Cr,name:s.z.string()}),Ky=s.z.object({}),Hy=s.z.object({key:Cr,data:s.z.string()}),Xy=s.z.object({}),Qy="/workspace/lineplot/create",ef="/workspace/lineplot/delete",tf="/workspace/lineplot/rename",rf="/workspace/lineplot/set-data";let nf=class{constructor(e){c(this,"client");this.client=e}async create(e,t){const n={...t,data:JSON.stringify(t.data)};return(await w(this.client,Qy,{workspace:e,linePlots:[n]},Wy,Gy)).linePlots[0]}async delete(e){const t=b(e);await w(this.client,ef,{keys:t},Vy,Fy)}async rename(e,t){await w(this.client,tf,{key:e,name:t},Jy,Ky)}async setData(e,t){await w(this.client,rf,{key:e,data:JSON.stringify(t)},Hy,Xy)}},Pa=class{constructor(e){c(this,"writer");c(this,"retriever");this.writer=new nf(e),this.retriever=new _y(e)}async create(e,t){return await this.writer.create(e,t)}async rename(e,t){await this.writer.rename(e,t)}async setData(e,t){await this.writer.setData(e,t)}async retrieve(e){const t=Array.isArray(e),n=await this.retriever.retrieve(e);return t?n:n[0]}async delete(e){await this.writer.delete(e)}};const sf=Object.freeze(Object.defineProperty({__proto__:null,Client:Pa,ONTOLOGY_TYPE:Ra,keyZ:Cr,linePlotZ:Pr,ontologyID:Zy},Symbol.toStringTag,{value:"Module"})),Dr=s.z.string().uuid(),Da=s.z.object({key:s.z.string(),name:s.z.string(),data:Ut.or(s.z.string().transform(r=>JSON.parse(r)))}),Mn=s.z.object({key:s.z.string(),name:s.z.string(),data:s.z.string().transform(r=>JSON.parse(r))}),ja="log",af=r=>new v({type:ja,key:r}),of=s.z.object({keys:s.z.string().array()}),cf=s.z.object({logs:Mn.array()});let lf=class{constructor(e){c(this,"ENDPOINT","/workspace/log/retrieve");c(this,"client");this.client=e}async retrieve(e){return(await w(this.client,this.ENDPOINT,{keys:b(e)},of,cf)).logs}};const uf=Da.partial({key:!0}).transform(r=>({...r,data:JSON.stringify(r.data)})),hf=s.z.object({workspace:de,logs:uf.array()}),df=s.z.object({logs:Mn.array()}),yf=s.z.object({keys:Dr.array()}),ff=s.z.object({}),gf=s.z.object({key:Dr,name:s.z.string()}),pf=s.z.object({}),mf=s.z.object({key:Dr,data:s.z.string()}),wf=s.z.object({}),bf="/workspace/log/create",vf="/workspace/log/delete",Tf="/workspace/log/rename",Of="/workspace/log/set-data";let zf=class{constructor(e){c(this,"client");this.client=e}async create(e,t){const n={...t,data:JSON.stringify(t.data)};return(await w(this.client,bf,{workspace:e,logs:[n]},hf,df)).logs[0]}async delete(e){const t=b(e);await w(this.client,vf,{keys:t},yf,ff)}async rename(e,t){await w(this.client,Tf,{key:e,name:t},gf,pf)}async setData(e,t){await w(this.client,Of,{key:e,data:JSON.stringify(t)},mf,wf)}},Ma=class{constructor(e){c(this,"writer");c(this,"retriever");this.writer=new zf(e),this.retriever=new lf(e)}async create(e,t){return await this.writer.create(e,t)}async rename(e,t){await this.writer.rename(e,t)}async setData(e,t){await this.writer.setData(e,t)}async retrieve(e){const t=Array.isArray(e),n=await this.retriever.retrieve(e);return t?n:n[0]}async delete(e){await this.writer.delete(e)}};const Ef=Object.freeze(Object.defineProperty({__proto__:null,Client:Ma,ONTOLOGY_TYPE:ja,keyZ:Dr,logRemoteZ:Mn,logZ:Da,ontologyID:af},Symbol.toStringTag,{value:"Module"})),Nf=s.z.object({keys:de.array().optional(),search:s.z.string().optional(),author:s.z.string().uuid().optional(),offset:s.z.number().optional(),limit:s.z.number().optional()}),Sf=s.z.object({workspaces:te(jn)});var Re;let If=(Re=class{constructor(e){c(this,"client");this.client=e}async retrieve(e){const t=b(e);return await this.execute({keys:t})}async retrieveByAuthor(e){return await this.execute({author: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){return(await w(this.client,Re.ENDPOINT,e,Nf,Sf)).workspaces}},c(Re,"ENDPOINT","/workspace/retrieve"),Re);const Ht=s.z.string().uuid(),Ba=s.z.object({key:s.z.string(),name:s.z.string(),data:Ut.or(s.z.string().transform(r=>JSON.parse(r))),snapshot:s.z.boolean()}),jr=s.z.object({key:s.z.string(),name:s.z.string(),snapshot:s.z.boolean(),data:s.z.string().transform(r=>JSON.parse(r))}),Za="schematic",kf=r=>new v({type:Za,key:r}),$f=s.z.object({keys:s.z.string().array()}),Af=s.z.object({schematics:jr.array()});let Rf=class{constructor(e){c(this,"ENDPOINT","/workspace/schematic/retrieve");c(this,"client");this.client=e}async retrieve(e){return(await w(this.client,this.ENDPOINT,{keys:b(e)},$f,Af)).schematics}};const xf=Ba.partial({key:!0,snapshot:!0}).transform(r=>({...r,data:JSON.stringify(r.data)})),Cf=s.z.object({workspace:de,schematics:xf.array()}),Pf=s.z.object({schematics:jr.array()}),Df=s.z.object({keys:Ht.array()}),jf=s.z.object({}),Mf=s.z.object({key:Ht,name:s.z.string()}),Bf=s.z.object({}),Zf=s.z.object({key:Ht,data:s.z.string()}),Uf=s.z.object({}),Lf=s.z.object({key:Ht,name:s.z.string(),snapshot:s.z.boolean()}),_f=s.z.object({schematic:jr}),Yf="/workspace/schematic/create",qf="/workspace/schematic/delete",Wf="/workspace/schematic/rename",Gf="/workspace/schematic/set-data",Vf="/workspace/schematic/copy";let Ff=class{constructor(e){c(this,"client");this.client=e}async create(e,t){const n={...t,data:JSON.stringify(t.data)};return(await w(this.client,Yf,{workspace:e,schematics:[n]},Cf,Pf)).schematics[0]}async copy(e,t,n){return(await w(this.client,Vf,{key:e,name:t,snapshot:n},Lf,_f)).schematic}async delete(e){const t=b(e);await w(this.client,qf,{keys:t},Df,jf)}async rename(e,t){await w(this.client,Wf,{key:e,name:t},Mf,Bf)}async setData(e,t){await w(this.client,Gf,{key:e,data:JSON.stringify(t)},Zf,Uf)}},Ua=class{constructor(e){c(this,"writer");c(this,"retriever");this.writer=new Ff(e),this.retriever=new Rf(e)}async create(e,t){return await this.writer.create(e,t)}async rename(e,t){await this.writer.rename(e,t)}async setData(e,t){await this.writer.setData(e,t)}async retrieve(e){const t=Array.isArray(e),n=await this.retriever.retrieve(e);return t?n:n[0]}async delete(e){await this.writer.delete(e)}async copy(e,t,n){return await this.writer.copy(e,t,n)}};const Jf=Object.freeze(Object.defineProperty({__proto__:null,Client:Ua,ONTOLOGY_TYPE:Za,keyZ:Ht,ontologyID:kf,schematicRemoteZ:jr,schematicZ:Ba},Symbol.toStringTag,{value:"Module"})),Mr=s.z.string().uuid(),La=s.z.object({key:s.z.string(),name:s.z.string(),data:Ut.or(s.z.string().transform(r=>JSON.parse(r)))}),Bn=s.z.object({key:s.z.string(),name:s.z.string(),data:s.z.string().transform(r=>JSON.parse(r))}),_a="table",Kf=r=>new v({type:_a,key:r}),Hf=s.z.object({keys:s.z.string().array()}),Xf=s.z.object({tables:Bn.array()}),Qf="/workspace/table/retrieve";class eg{constructor(e){c(this,"client");this.client=e}async retrieve(e){return(await w(this.client,Qf,{keys:b(e)},Hf,Xf)).tables}}const tg=La.partial({key:!0}).transform(r=>({...r,data:JSON.stringify(r.data)})),rg=s.z.object({workspace:de,tables:tg.array()}),ng=s.z.object({tables:Bn.array()}),sg=s.z.object({keys:Mr.array()}),ig=s.z.object({}),ag=s.z.object({key:Mr,name:s.z.string()}),og=s.z.object({}),cg=s.z.object({key:Mr,data:s.z.string()}),lg=s.z.object({}),ug="/workspace/table/create",hg="/workspace/table/delete",dg="/workspace/table/rename",yg="/workspace/table/set-data";let fg=class{constructor(e){c(this,"client");this.client=e}async create(e,t){const n={...t,data:JSON.stringify(t.data)};return(await w(this.client,ug,{workspace:e,tables:[n]},rg,ng)).tables[0]}async delete(e){const t=b(e);await w(this.client,hg,{keys:t},sg,ig)}async rename(e,t){await w(this.client,dg,{key:e,name:t},ag,og)}async setData(e,t){await w(this.client,yg,{key:e,data:JSON.stringify(t)},cg,lg)}},Ya=class{constructor(e){c(this,"writer");c(this,"retriever");this.writer=new fg(e),this.retriever=new eg(e)}async create(e,t){return await this.writer.create(e,t)}async rename(e,t){await this.writer.rename(e,t)}async setData(e,t){await this.writer.setData(e,t)}async retrieve(e){const t=Array.isArray(e),n=await this.retriever.retrieve(e);return t?n:n[0]}async delete(e){await this.writer.delete(e)}};const gg=Object.freeze(Object.defineProperty({__proto__:null,Client:Ya,ONTOLOGY_TYPE:_a,keyZ:Mr,ontologyID:Kf,tableRemoteZ:Bn,tableZ:La},Symbol.toStringTag,{value:"Module"})),pg=Dn.partial({key:!0}).transform(r=>({...r,layout:JSON.stringify(r.layout)})),mg=s.z.object({workspaces:pg.array()}),wg=s.z.object({workspaces:jn.array()}),bg=s.z.object({keys:de.array()}),vg=s.z.object({}),Tg=s.z.object({key:de,name:s.z.string()}),Og=s.z.object({}),zg=s.z.object({key:de,layout:s.z.string()}),Eg=s.z.object({}),Ng="/workspace/create",Sg="/workspace/delete",Ig="/workspace/rename",kg="/workspace/set-layout";class $g{constructor(e){c(this,"client");this.client=e}async create(e){return(await w(this.client,Ng,{workspaces:b(e)},mg,wg)).workspaces}async delete(e){await w(this.client,Sg,{keys:b(e)},bg,vg)}async rename(e,t){await w(this.client,Ig,{key:e,name:t},Tg,Og)}async setLayout(e,t){await w(this.client,kg,{key:e,layout:JSON.stringify(t)},zg,Eg)}}class qa{constructor(e){c(this,"type","workspace");c(this,"schematic");c(this,"linePlot");c(this,"log");c(this,"table");c(this,"retriever");c(this,"writer");this.schematic=new Ua(e),this.linePlot=new Pa(e),this.retriever=new If(e),this.log=new Ma(e),this.writer=new $g(e),this.table=new Ya(e)}async search(e){return await this.retriever.search(e)}async retrieveByAuthor(e){return await this.retriever.retrieveByAuthor(e)}async retrieve(e){const t=Array.isArray(e),n=await this.retriever.retrieve(e);return t?n:n[0]}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 rename(e,t){await this.writer.rename(e,t)}async setLayout(e,t){await this.writer.setLayout(e,t)}async delete(...e){await this.writer.delete(e)}}const Ag=Object.freeze(Object.defineProperty({__proto__:null,Client:qa,ONTOLOGY_TYPE:Ca,keyZ:de,ontologyID:Yy,workspaceRemoteZ:jn,workspaceZ:Dn},Symbol.toStringTag,{value:"Module"})),Wa=s.z.object({host:s.z.string({required_error:"Host is required"}).min(1,"Host is required"),port:s.z.number({required_error:"Port is required"}).or(s.z.string({required_error:"Port is required"})),username:s.z.string().min(1,"Username is required"),password:s.z.string().min(1,"Password is required"),connectivityPollFrequency:I.z.default(I.seconds(30)),secure:s.z.boolean().optional().default(!1),name:s.z.string().optional()});class Ga extends na{constructor(t){const n=Wa.parse(t),{host:i,port:a,username:o,password:l,connectivityPollFrequency:u,secure:h}=n,y=new By(new Xl({host:i,port:Number(a)}),h);y.use(uu);let d;o!=null&&l!=null&&(d=new Mh(y.unary,{username:o,password:l}),y.use(d.middleware()));const P=new In(new Dt(y.unary)),D=new Gi(y.unary,P);super(y.stream,y.unary,P);c(this,"createdAt");c(this,"props");c(this,"ranges");c(this,"channels");c(this,"auth");c(this,"user");c(this,"access");c(this,"connectivity");c(this,"ontology");c(this,"workspaces");c(this,"labels");c(this,"hardware");c(this,"control");c(this,"transport");c(this,"clientVersion","0.35.0");this.createdAt=S.now(),this.props=n,this.auth=d,this.transport=y,this.channels=new Wi(this,P,y.unary,D),this.connectivity=new jt(y.unary,u,this.clientVersion,n.name),this.control=new ia(this),this.ontology=new Pi(y.unary,this);const ee=new Aa(this.transport.unary);this.labels=new za(this.transport.unary,this,this.ontology),this.ranges=new $a(this,ee,this.transport.unary,P,this.labels,this.ontology),this.access=new Zi(this.transport.unary),this.user=new Ji(this.transport.unary),this.workspaces=new qa(this.transport.unary);const B=new ha(this.transport.unary,this),Zn=new ma(this.transport.unary,this,this.ontology,this.ranges),Va=new da(this.transport.unary,this,Zn);this.hardware=new aa(Zn,Va,B)}get key(){return this.createdAt.valueOf().toString()}close(){this.connectivity.stopChecking()}}c(Ga,"connectivity",jt);const Rg=ct.Authority;exports.AuthError=De;exports.Authority=Rg;exports.Channel=kn;exports.ContiguityError=wn;exports.DataType=N;exports.Density=F;exports.Frame=_;exports.MultiSeries=Oi;exports.MultipleFoundError=we;exports.NotFoundError=me;exports.QueryError=re;exports.Rate=at;exports.RouteError=Pt;exports.Series=ze;exports.Synnax=Ga;exports.TimeRange=W;exports.TimeSpan=I;exports.TimeStamp=S;exports.UnexpectedError=Ne;exports.ValidationError=M;exports.access=Yu;exports.channel=hh;exports.connection=Uh;exports.control=cd;exports.device=Od;exports.framer=nd;exports.hardware=ld;exports.label=sy;exports.linePlot=sf;exports.log=Ef;exports.ontology=ku;exports.policy=_u;exports.rack=$d;exports.ranger=jy;exports.schematic=Jf;exports.signals=dd;exports.synnaxPropsZ=Wa;exports.table=gg;exports.task=Yd;exports.user=Ah;exports.workspace=Ag;