@synnaxlabs/freighter 0.33.0 → 0.34.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/errors.d.ts +3 -5
- package/dist/errors.d.ts.map +1 -1
- package/dist/freighter.cjs +11 -11
- package/dist/freighter.js +83 -59
- package/package.json +11 -10
- package/src/errors.spec.ts +2 -6
- package/src/errors.ts +7 -18
- package/src/websocket.spec.ts +3 -4
package/dist/errors.d.ts
CHANGED
|
@@ -25,7 +25,6 @@ export declare const errorMatcher: (type: string) => (e: string | Error | unknow
|
|
|
25
25
|
export declare class BaseTypedError extends Error implements TypedError {
|
|
26
26
|
readonly discriminator = "FreighterError";
|
|
27
27
|
type: string;
|
|
28
|
-
constructor(message?: string);
|
|
29
28
|
}
|
|
30
29
|
type ErrorDecoder = (encoded: ErrorPayload) => Error | null;
|
|
31
30
|
type ErrorEncoder = (error: TypedError) => ErrorPayload | null;
|
|
@@ -75,18 +74,17 @@ export declare const encodeError: (error: unknown) => ErrorPayload;
|
|
|
75
74
|
export declare const decodeError: (payload: ErrorPayload) => Error | null;
|
|
76
75
|
export declare class UnknownError extends BaseTypedError implements TypedError {
|
|
77
76
|
type: string;
|
|
78
|
-
constructor(message: string);
|
|
79
77
|
}
|
|
80
78
|
/** Thrown/returned when a stream closed normally. */
|
|
81
79
|
export declare class EOF extends BaseTypedError implements TypedError {
|
|
82
|
-
static readonly TYPE
|
|
80
|
+
static readonly TYPE = "freighter.eof";
|
|
83
81
|
type: string;
|
|
84
82
|
static readonly matches: (e: string | Error | unknown) => boolean;
|
|
85
83
|
constructor();
|
|
86
84
|
}
|
|
87
85
|
/** Thrown/returned when a stream is closed abnormally. */
|
|
88
86
|
export declare class StreamClosed extends BaseTypedError implements TypedError {
|
|
89
|
-
static readonly TYPE
|
|
87
|
+
static readonly TYPE = "freighter.stream_closed";
|
|
90
88
|
static readonly matches: (e: string | Error | unknown) => boolean;
|
|
91
89
|
type: string;
|
|
92
90
|
constructor();
|
|
@@ -97,7 +95,7 @@ export interface UnreachableArgs {
|
|
|
97
95
|
}
|
|
98
96
|
/** Thrown when a target is unreachable. */
|
|
99
97
|
export declare class Unreachable extends BaseTypedError implements TypedError {
|
|
100
|
-
static readonly TYPE
|
|
98
|
+
static readonly TYPE = "freighter.unreachable";
|
|
101
99
|
type: string;
|
|
102
100
|
static readonly matches: (e: string | Error | unknown) => boolean;
|
|
103
101
|
url: URL;
|
package/dist/errors.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AACpC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,+FAA+F;AAC/F,MAAM,WAAW,kBAAkB;IACjC;;;OAGG;IACH,OAAO,EAAE,CAAC,CAAC,EAAE,MAAM,GAAG,KAAK,GAAG,OAAO,KAAK,OAAO,CAAC;CACnD;AAED,MAAM,WAAW,UAAW,SAAQ,KAAK;IACvC,aAAa,EAAE,gBAAgB,CAAC;IAChC;;;OAGG;IACH,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;;GAIG;AACH,eAAO,MAAM,YAAY,SAChB,MAAM,SACT,MAAM,GAAG,KAAK,GAAG,OAAO,KAAG,OAM9B,CAAC;AAEJ,qBAAa,cAAe,SAAQ,KAAM,YAAW,UAAU;IAC7D,QAAQ,CAAC,aAAa,oBAAoB;IAC1C,IAAI,EAAE,MAAM,CAAM;
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AACpC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,+FAA+F;AAC/F,MAAM,WAAW,kBAAkB;IACjC;;;OAGG;IACH,OAAO,EAAE,CAAC,CAAC,EAAE,MAAM,GAAG,KAAK,GAAG,OAAO,KAAK,OAAO,CAAC;CACnD;AAED,MAAM,WAAW,UAAW,SAAQ,KAAK;IACvC,aAAa,EAAE,gBAAgB,CAAC;IAChC;;;OAGG;IACH,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;;GAIG;AACH,eAAO,MAAM,YAAY,SAChB,MAAM,SACT,MAAM,GAAG,KAAK,GAAG,OAAO,KAAG,OAM9B,CAAC;AAEJ,qBAAa,cAAe,SAAQ,KAAM,YAAW,UAAU;IAC7D,QAAQ,CAAC,aAAa,oBAAoB;IAC1C,IAAI,EAAE,MAAM,CAAM;CACnB;AAED,KAAK,YAAY,GAAG,CAAC,OAAO,EAAE,YAAY,KAAK,KAAK,GAAG,IAAI,CAAC;AAC5D,KAAK,YAAY,GAAG,CAAC,KAAK,EAAE,UAAU,KAAK,YAAY,GAAG,IAAI,CAAC;AAE/D,eAAO,MAAM,YAAY,UAAW,OAAO,KAAG,KAAK,IAAI,UAStD,CAAC;AAEF,eAAO,MAAM,eAAe,GAAI,CAAC,QAAQ,MAAM,UAAU,KAAK,GAAG,IAAI,KAAG,CAUvE,CAAC;AAEF,eAAO,MAAM,OAAO,YAAY,CAAC;AACjC,eAAO,MAAM,IAAI,QAAQ,CAAC;AAC1B,eAAO,MAAM,SAAS,cAAc,CAAC;AAErC,eAAO,MAAM,MAAM;;;;;;;;;EAAmD,CAAC;AAEvE,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,MAAM,CAAC,CAAC;AAqClD;;;;;;;GAOG;AACH,eAAO,MAAM,aAAa,wBAGvB;IACD,MAAM,EAAE,YAAY,CAAC;IACrB,MAAM,EAAE,YAAY,CAAC;CACtB,KAAG,IAA6C,CAAC;AAElD;;;;;GAKG;AACH,eAAO,MAAM,WAAW,UAAW,OAAO,KAAG,YAAsC,CAAC;AAEpF;;;;;;;GAOG;AACH,eAAO,MAAM,WAAW,YAAa,YAAY,KAAG,KAAK,GAAG,IAClC,CAAC;AAE3B,qBAAa,YAAa,SAAQ,cAAe,YAAW,UAAU;IACpE,IAAI,SAAa;CAClB;AAID,qDAAqD;AACrD,qBAAa,GAAI,SAAQ,cAAe,YAAW,UAAU;IAC3D,MAAM,CAAC,QAAQ,CAAC,IAAI,mBAAgC;IACpD,IAAI,SAAY;IAChB,MAAM,CAAC,QAAQ,CAAC,OAAO,MA/HnB,MAAM,GAAG,KAAK,GAAG,OAAO,KAAG,OAAO,CA+HW;;CAKlD;AAED,0DAA0D;AAC1D,qBAAa,YAAa,SAAQ,cAAe,YAAW,UAAU;IACpE,MAAM,CAAC,QAAQ,CAAC,IAAI,6BAA0C;IAC9D,MAAM,CAAC,QAAQ,CAAC,OAAO,MAzInB,MAAM,GAAG,KAAK,GAAG,OAAO,KAAG,OAAO,CAyIoB;IAC1D,IAAI,SAAqB;;CAK1B;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,GAAG,CAAC;CACX;AAED,2CAA2C;AAC3C,qBAAa,WAAY,SAAQ,cAAe,YAAW,UAAU;IACnE,MAAM,CAAC,QAAQ,CAAC,IAAI,2BAAwC;IAC5D,IAAI,SAAoB;IACxB,MAAM,CAAC,QAAQ,CAAC,OAAO,MA1JnB,MAAM,GAAG,KAAK,GAAG,OAAO,KAAG,OAAO,CA0JmB;IACzD,GAAG,EAAE,GAAG,CAAC;gBAEG,IAAI,GAAE,eAAoB;CAKvC"}
|
package/dist/freighter.cjs
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
"use strict";var ht=Object.defineProperty;var dt=(r,e,t)=>e in r?ht(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t;var p=(r,e,t)=>dt(r,typeof e!="symbol"?e+"":e,t);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const i=require("zod"),ft=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)},We=r=>{const e=(t,n=ge)=>{if(typeof t=="string")return r(t);if(Array.isArray(t))return t.map(c=>e(c,n));if(!le(t))return t;n=yt(n);const s={},a=t;return Object.keys(a).forEach(c=>{let d=a[c];const f=r(c);n.recursive&&(le(d)?Ae(d,n.keepTypesOnRecursion)||(d=e(d,n)):n.recursiveInArray&&Ee(d)&&(d=[...d].map(y=>{let T=y;return le(y)?Ae(T,n.keepTypesOnRecursion)||(T=e(y,n)):Ee(y)&&(T=e({key:y},n).key),T}))),s[f]=d}),s};return e},Ve=We(ft),gt=r=>r.replace(/([a-z0-9])([A-Z])/g,(e,t,n)=>`${t}_${n.toLowerCase()}`),pt=We(gt),ge={recursive:!0,recursiveInArray:!0,keepTypesOnRecursion:[Number,String,Uint8Array]},yt=(r=ge)=>(r.recursive==null?r=ge:r.recursiveInArray
|
|
1
|
+
"use strict";var ht=Object.defineProperty;var dt=(r,e,t)=>e in r?ht(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t;var p=(r,e,t)=>dt(r,typeof e!="symbol"?e+"":e,t);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const i=require("zod"),ft=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)},We=r=>{const e=(t,n=ge)=>{if(typeof t=="string")return r(t);if(Array.isArray(t))return t.map(c=>e(c,n));if(!le(t))return t;n=yt(n);const s={},a=t;return Object.keys(a).forEach(c=>{let d=a[c];const f=r(c);n.recursive&&(le(d)?Ae(d,n.keepTypesOnRecursion)||(d=e(d,n)):n.recursiveInArray&&Ee(d)&&(d=[...d].map(y=>{let T=y;return le(y)?Ae(T,n.keepTypesOnRecursion)||(T=e(y,n)):Ee(y)&&(T=e({key:y},n).key),T}))),s[f]=d}),s};return e},Ve=We(ft),gt=r=>r.replace(/([a-z0-9])([A-Z])/g,(e,t,n)=>`${t}_${n.toLowerCase()}`),pt=We(gt),ge={recursive:!0,recursiveInArray:!0,keepTypesOnRecursion:[Number,String,Uint8Array]},yt=(r=ge)=>(r.recursive==null?r=ge:r.recursiveInArray??(r.recursiveInArray=!1),r),Ee=r=>r!=null&&Array.isArray(r),le=r=>r!=null&&typeof r=="object"&&!Array.isArray(r),Ae=(r,e)=>(e||[]).some(t=>r instanceof t),Ze=r=>r!=null&&typeof r=="object"&&!Array.isArray(r);var mt=Object.defineProperty,wt=(r,e,t)=>e in r?mt(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,Q=(r,e,t)=>wt(r,typeof e!="symbol"?e+"":e,t);let bt=class{constructor(){Q(this,"contentType","application/json"),Q(this,"decoder"),Q(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),s=Ve(n);return t!=null?t.parse(s):s}encodeString(e){const t=pt(e);return JSON.stringify(t,(n,s)=>ArrayBuffer.isView(s)?Array.from(s):Ze(s)&&"encode_value"in s?typeof s.value=="bigint"?s.value.toString():s.value:typeof s=="bigint"?s.toString():s)}static registerCustomType(){}},Tt=class{constructor(){Q(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||!Ze(e[0]))throw new Error("Payload must be an array of objects");const t=Object.keys(e[0]),n=[t.join(",")];return e.forEach(s=>{const a=t.map(c=>JSON.stringify(s[c]??""));n.push(a.join(","))}),n.join(`
|
|
2
2
|
`)}decodeString(e,t){const[n,...s]=e.trim().split(`
|
|
3
|
-
`).map(d=>d.trim());if(n.length===0)return t!=null?t.parse({}):{};const a=n.split(",").map(d=>d.trim()),c={};return a.forEach(d=>{c[d]=[]}),s.forEach(d=>{const f=d.split(",").map(y=>y.trim());a.forEach((y,T)=>{const l=this.parseValue(f[T]);l!=null&&c[y].push(l)})}),t!=null?t.parse(c):c}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(){}},Ot=class{constructor(){Q(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 te=new bt;new Tt;new Ot;const oe=i.z.tuple([i.z.number(),i.z.number()]);i.z.tuple([i.z.bigint(),i.z.bigint()]);const Je=i.z.object({width:i.z.number(),height:i.z.number()}),vt=i.z.object({signedWidth:i.z.number(),signedHeight:i.z.number()}),St=["width","height"];i.z.enum(St);const It=["start","center","end"],Nt=["signedWidth","signedHeight"];i.z.enum(Nt);const ie=i.z.object({x:i.z.number(),y:i.z.number()}),Et=i.z.object({clientX:i.z.number(),clientY:i.z.number()}),At=["x","y"],He=i.z.enum(At),Ke=["top","right","bottom","left"];i.z.enum(Ke);const xt=["left","right"],Xe=i.z.enum(xt),zt=["top","bottom"],Qe=i.z.enum(zt),_e=["center"],xe=i.z.enum(_e),Mt=[...Ke,..._e],et=i.z.enum(Mt);i.z.enum(It);const Bt=["first","last"];i.z.enum(Bt);const Rt=i.z.object({lower:i.z.number(),upper:i.z.number()}),$t=i.z.object({lower:i.z.bigint(),upper:i.z.bigint()});i.z.union([Rt,oe]);i.z.union([$t,oe]);i.z.union([He,et]);i.z.union([He,et,i.z.instanceof(String)]);const Ut=r=>typeof r=="bigint"||r instanceof BigInt,j=(r,e)=>Ut(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 ze(r);return ze(t)},ze=r=>r.lower>r.upper?{lower:r.upper,upper:r.lower}:r,Me=(r,e)=>{const t=k(r);return e<t.lower?t.lower:e>=t.upper?t.upper-(typeof t.upper=="number"?1:1n):e};i.z.object({x:Xe.or(xe),y:Qe.or(xe)});const Ct=i.z.object({x:Xe,y:Qe}),Dt=Object.freeze({x:"left",y:"top"}),Pt=(r,e)=>r.x===e.x&&r.y===e.y,Be=i.z.union([i.z.number(),ie,oe,Je,vt,Et]),Lt=(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}},Re=Object.freeze({x:0,y:0}),ee=i.z.union([i.z.number(),i.z.string()]);i.z.object({top:ee,left:ee,width:ee,height:ee});i.z.object({left:i.z.number(),top:i.z.number(),right:i.z.number(),bottom:i.z.number()});i.z.object({one:ie,two:ie,root:Ct});const Oe=(r,e,t=0,n=0,s)=>{const a={one:{...Re},two:{...Re},root:s??Dt};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:s??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))},he=r=>{const e=Oe(r);return{lower:e.one.x,upper:e.two.x}},de=r=>{const e=Oe(r);return{lower:e.one.y,upper:e.two.y}},Yt=r=>typeof r!="object"||r==null?!1:"one"in r&&"two"in r&&"root"in r;var kt=Object.defineProperty,jt=(r,e,t)=>e in r?kt(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,C=(r,e,t)=>jt(r,typeof e!="symbol"?e+"":e,t);const Ft=(r,e,t)=>e!==void 0&&r<e?e:t!==void 0&&r>t?t:r;i.z.object({offset:Be,scale:Be});const qt=r=>(e,t,n,s)=>t==="dimension"?[e,n]:[e,s?n-r:n+r],Gt=r=>(e,t,n,s)=>[e,s?n/r:n*r],Wt=r=>(e,t,n)=>{if(e===null)return[r,n];const{lower:s,upper:a}=e,{lower:c,upper:d}=r,f=a-s,y=d-c;if(t==="dimension")return[r,n*(y/f)];const T=(n-s)*(y/f)+c;return[r,T]},Vt=r=>(e,t,n)=>[r,n],Zt=()=>(r,e,t)=>{if(r===null)throw new Error("cannot invert without bounds");if(e==="dimension")return[r,t];const{lower:n,upper:s}=r;return[r,s-(t-n)]},Jt=r=>(e,t,n)=>{const{lower:s,upper:a}=r;return n=Ft(n,s,a),[e,n]},pe=class V{constructor(){C(this,"ops",[]),C(this,"currBounds",null),C(this,"currType",null),C(this,"reversed",!1),this.ops=[]}static translate(e){return new V().translate(e)}static magnify(e){return new V().magnify(e)}static scale(e,t){return new V().scale(e,t)}translate(e){const t=this.new(),n=qt(e);return n.type="translate",t.ops.push(n),t}magnify(e){const t=this.new(),n=Gt(e);return n.type="magnify",t.ops.push(n),t}scale(e,t){const n=k(e,t),s=this.new(),a=Wt(n);return a.type="scale",s.ops.push(a),s}clamp(e,t){const n=k(e,t),s=this.new(),a=Jt(n);return a.type="clamp",s.ops.push(a),s}reBound(e,t){const n=k(e,t),s=this.new(),a=Vt(n);return a.type="re-bound",s.ops.push(a),s}invert(){const e=Zt();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 V;return e.ops=this.ops.slice(),e.reversed=this.reversed,e}exec(e,t){return this.currBounds=null,this.ops.reduce(([n,s],a)=>a(n,e,s,this.reversed),[null,t])[1]}reverse(){const e=this.new();e.ops.reverse();const t=[];return e.ops.forEach((n,s)=>{if(n.type==="scale"||t.some(([c,d])=>s>=c&&s<=d))return;const a=e.ops.findIndex((c,d)=>c.type==="scale"&&d>s);a!==-1&&t.push([s,a])}),t.forEach(([n,s])=>{const a=e.ops.slice(n,s);a.unshift(e.ops[s]),e.ops.splice(n,s-n+1,...a)}),e.reversed=!e.reversed,e}};C(pe,"IDENTITY",new pe);let $e=pe;const Ue=class U{constructor(e=new $e,t=new $e,n=null){C(this,"x"),C(this,"y"),C(this,"currRoot"),this.x=e,this.y=t,this.currRoot=n}static translate(e,t){return new U().translate(e,t)}static translateX(e){return new U().translateX(e)}static translateY(e){return new U().translateY(e)}static clamp(e){return new U().clamp(e)}static magnify(e){return new U().magnify(e)}static scale(e){return new U().scale(e)}static reBound(e){return new U().reBound(e)}translate(e,t){const n=Lt(e,t),s=this.copy();return s.x=this.x.translate(n.x),s.y=this.y.translate(n.y),s}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(Yt(e)){const n=this.currRoot;return t.currRoot=e.root,n!=null&&!Pt(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(he(e)),t.y=t.y.scale(de(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(he(e)),t.y=this.y.reBound(de(e)),t}clamp(e){const t=this.copy();return t.x=this.x.clamp(he(e)),t.y=this.y.clamp(de(e)),t}copy(){const e=new U;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)}}box(e){return Oe(this.pos(e.one),this.pos(e.two),0,0,this.currRoot??e.root)}};C(Ue,"IDENTITY",new Ue);const Ht=r=>r!=null&&typeof r=="object"&&"toString"in r,Kt=(r,e=!1)=>{const t=Ht(r)?"stringer":typeof r;let n;switch(t){case"string":n=(s,a)=>s.localeCompare(a);break;case"stringer":n=(s,a)=>s.toString().localeCompare(a.toString());break;case"number":n=(s,a)=>Number(s)-Number(a);break;case"bigint":n=(s,a)=>BigInt(s)-BigInt(a)>0n?1:-1;break;case"boolean":n=(s,a)=>Number(s)-Number(a);break;case"undefined":n=()=>0;break;default:return console.warn(`sortFunc: unknown type ${t}`),()=>-1}return e?Xt(n):n},Xt=r=>(e,t)=>r(t,e),Qt=i.z.object({signedWidth:i.z.number(),signedHeight:i.z.number()});i.z.union([Je,Qt,ie,oe]);const _t=i.z.bigint().or(i.z.string().transform(BigInt));var er=Object.defineProperty,tr=(r,e,t)=>e in r?er(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,u=(r,e,t)=>tr(r,typeof e!="symbol"?e+"":e,t);let rr=(r,e=21)=>(t=e)=>{let n="",s=t;for(;s--;)n+=r[Math.random()*r.length|0];return n};const nr="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",sr=rr(nr,11),ir=i.z.enum(["static","dynamic"]),tt=(r,e)=>{const t=new O(e);if(![S.DAY,S.HOUR,S.MINUTE,S.SECOND,S.MILLISECOND,S.MICROSECOND,S.NANOSECOND].some(s=>s.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 O?new O(n):new S(n)},m=class h{constructor(e,t="UTC"){if(u(this,"value"),u(this,"encodeValue",!0),e==null)this.value=h.now().valueOf();else if(e instanceof Date)this.value=BigInt(e.getTime())*h.MILLISECOND.valueOf();else if(typeof e=="string")this.value=h.parseDateTimeString(e,t).valueOf();else if(Array.isArray(e))this.value=h.parseDate(e);else{let n=BigInt(0);e instanceof Number&&(e=e.valueOf()),t==="local"&&(n=h.utcOffset.valueOf()),typeof e=="number"&&(isFinite(e)?e=Math.trunc(e):(isNaN(e)&&(e=0),e===1/0?e=h.MAX:e=h.MIN)),this.value=BigInt(e.valueOf())+n}}static parseDate([e=1970,t=1,n=1]){const s=new Date(e,t-1,n,0,0,0,0);return new h(BigInt(s.getTime())*h.MILLISECOND.valueOf()).truncate(h.DAY).valueOf()}encode(){return this.value.toString()}valueOf(){return this.value}static parseTimeString(e,t="UTC"){const[n,s,a]=e.split(":");let c="00",d="00";a!=null&&([c,d]=a.split("."));let f=h.hours(parseInt(n??"00",10)).add(h.minutes(parseInt(s??"00",10))).add(h.seconds(parseInt(c??"00",10))).add(h.milliseconds(parseInt(d??"00",10)));return t==="local"&&(f=f.add(h.utcOffset)),f.valueOf()}static parseDateTimeString(e,t="UTC"){if(!e.includes("/")&&!e.includes("-"))return h.parseTimeString(e,t);const n=new Date(e);return e.includes(":")||n.setUTCHours(0,0,0,0),new h(BigInt(n.getTime())*h.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(h.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 S(BigInt(new Date().getTimezoneOffset())*h.MINUTE.valueOf())}static since(e){return new h().span(e)}date(){return new Date(this.milliseconds())}equals(e){return this.valueOf()===new h(e).valueOf()}span(e){return this.range(e).span}range(e){return new ve(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 h(e).valueOf()}afterEq(e){return this.valueOf()>=new h(e).valueOf()}before(e){return this.valueOf()<new h(e).valueOf()}beforeEq(e){return this.valueOf()<=new h(e).valueOf()}add(e){return new h(this.valueOf()+BigInt(e.valueOf()))}sub(e){return new h(this.valueOf()-BigInt(e.valueOf()))}milliseconds(){return Number(this.valueOf())/Number(h.MILLISECOND.valueOf())}toString(){return this.date().toISOString()}remainder(e){return tt(this,e)}get isToday(){return this.truncate(S.DAY).equals(h.now().truncate(S.DAY))}truncate(e){return this.sub(this.remainder(e))}static now(){return new h(new Date)}static max(...e){let t=h.MIN;for(const n of e){const s=new h(n);s.after(t)&&(t=s)}return t}static min(...e){let t=h.MAX;for(const n of e){const s=new h(n);s.before(t)&&(t=s)}return t}static nanoseconds(e){return new h(e)}static microseconds(e){return h.nanoseconds(e*1e3)}static milliseconds(e){return h.microseconds(e*1e3)}static seconds(e){return h.milliseconds(e*1e3)}static minutes(e){return h.seconds(e*60)}static hours(e){return h.minutes(e*60)}static days(e){return h.hours(e*24)}};u(m,"NANOSECOND",m.nanoseconds(1)),u(m,"MICROSECOND",m.microseconds(1)),u(m,"MILLISECOND",m.milliseconds(1)),u(m,"SECOND",m.seconds(1)),u(m,"MINUTE",m.minutes(1)),u(m,"HOUR",m.hours(1)),u(m,"DAY",m.days(1)),u(m,"MAX",new m((1n<<63n)-1n)),u(m,"MIN",new m(0)),u(m,"ZERO",new m(0)),u(m,"z",i.z.union([i.z.object({value:i.z.bigint()}).transform(r=>new m(r.value)),i.z.string().transform(r=>new m(BigInt(r))),i.z.instanceof(Number).transform(r=>new m(r)),i.z.number().transform(r=>new m(r)),i.z.instanceof(m)]));let O=m;const w=class g{constructor(e){u(this,"value"),u(this,"encodeValue",!0),typeof e=="number"&&(e=Math.trunc(e.valueOf())),this.value=BigInt(e.valueOf())}static fromSeconds(e){return e instanceof g?e:e instanceof Ce?e.period:e instanceof O?new g(e):["number","bigint"].includes(typeof e)?g.seconds(e):new g(e)}static fromMilliseconds(e){return e instanceof g?e:e instanceof Ce?e.period:e instanceof O?new g(e):["number","bigint"].includes(typeof e)?g.milliseconds(e):new g(e)}encode(){return this.value.toString()}valueOf(){return this.value}lessThan(e){return this.valueOf()<new g(e).valueOf()}greaterThan(e){return this.valueOf()>new g(e).valueOf()}lessThanOrEqual(e){return this.valueOf()<=new g(e).valueOf()}greaterThanOrEqual(e){return this.valueOf()>=new g(e).valueOf()}remainder(e){return tt(this,e)}truncate(e){return new g(BigInt(Math.trunc(Number(this.valueOf()/e.valueOf())))*e.valueOf())}toString(){const e=this.truncate(g.DAY),t=this.truncate(g.HOUR),n=this.truncate(g.MINUTE),s=this.truncate(g.SECOND),a=this.truncate(g.MILLISECOND),c=this.truncate(g.MICROSECOND),d=this.truncate(g.NANOSECOND),f=e,y=t.sub(e),T=n.sub(t),l=s.sub(n),E=a.sub(s),R=c.sub(a),$=d.sub(c);let x="";return f.isZero||(x+=`${f.days}d `),y.isZero||(x+=`${y.hours}h `),T.isZero||(x+=`${T.minutes}m `),l.isZero||(x+=`${l.seconds}s `),E.isZero||(x+=`${E.milliseconds}ms `),R.isZero||(x+=`${R.microseconds}µs `),$.isZero||(x+=`${$.nanoseconds}ns`),x.trim()}get days(){return Number(this.valueOf())/Number(g.DAY.valueOf())}get hours(){return Number(this.valueOf())/Number(g.HOUR.valueOf())}get minutes(){return Number(this.valueOf())/Number(g.MINUTE.valueOf())}get seconds(){return Number(this.valueOf())/Number(g.SECOND.valueOf())}get milliseconds(){return Number(this.valueOf())/Number(g.MILLISECOND.valueOf())}get microseconds(){return Number(this.valueOf())/Number(g.MICROSECOND.valueOf())}get nanoseconds(){return Number(this.valueOf())}get isZero(){return this.valueOf()===BigInt(0)}equals(e){return this.valueOf()===new g(e).valueOf()}add(e){return new g(this.valueOf()+new g(e).valueOf())}sub(e){return new g(this.valueOf()-new g(e).valueOf())}static nanoseconds(e=1){return new g(e)}static microseconds(e=1){return g.nanoseconds(j(e,1e3))}static milliseconds(e=1){return g.microseconds(j(e,1e3))}static seconds(e=1){return g.milliseconds(j(e,1e3))}static minutes(e=1){return g.seconds(j(e,60))}static hours(e){return g.minutes(j(e,60))}static days(e){return g.hours(j(e,24))}};u(w,"NANOSECOND",w.nanoseconds(1)),u(w,"MICROSECOND",w.microseconds(1)),u(w,"MILLISECOND",w.milliseconds(1)),u(w,"SECOND",w.seconds(1)),u(w,"MINUTE",w.minutes(1)),u(w,"HOUR",w.hours(1)),u(w,"DAY",w.days(1)),u(w,"MAX",new w((1n<<63n)-1n)),u(w,"MIN",new w(0)),u(w,"ZERO",new w(0)),u(w,"z",i.z.union([i.z.object({value:i.z.bigint()}).transform(r=>new w(r.value)),i.z.string().transform(r=>new w(BigInt(r))),i.z.instanceof(Number).transform(r=>new w(r)),i.z.number().transform(r=>new w(r)),i.z.instanceof(w)]));let S=w;const Z=class re extends Number{constructor(e){e instanceof Number?super(e.valueOf()):super(e)}toString(){return`${this.valueOf()} Hz`}equals(e){return this.valueOf()===new re(e).valueOf()}get period(){return S.seconds(1/this.valueOf())}sampleCount(e){return new S(e).seconds*this.valueOf()}byteCount(e,t){return this.sampleCount(e)*new A(t).valueOf()}span(e){return S.seconds(e/this.valueOf())}byteSpan(e,t){return this.span(e.valueOf()/t.valueOf())}static hz(e){return new re(e)}static khz(e){return re.hz(e*1e3)}};u(Z,"z",i.z.union([i.z.number().transform(r=>new Z(r)),i.z.instanceof(Number).transform(r=>new Z(r)),i.z.instanceof(Z)]));let Ce=Z;const I=class extends Number{constructor(e){e instanceof Number?super(e.valueOf()):super(e)}length(e){return e.valueOf()/this.valueOf()}size(e){return new ye(e*this.valueOf())}};u(I,"UNKNOWN",new I(0)),u(I,"BIT128",new I(16)),u(I,"BIT64",new I(8)),u(I,"BIT32",new I(4)),u(I,"BIT16",new I(2)),u(I,"BIT8",new I(1)),u(I,"z",i.z.union([i.z.number().transform(r=>new I(r)),i.z.instanceof(Number).transform(r=>new I(r)),i.z.instanceof(I)]));let A=I;const z=class ne{constructor(e,t){u(this,"start"),u(this,"end"),typeof e=="object"&&"start"in e?(this.start=new O(e.start),this.end=new O(e.end)):(this.start=new O(e),this.end=new O(t))}get span(){return new S(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 ne(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=S.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 s=O.max(n.start,e.start),a=O.min(n.end,e.end);return a.before(s)?!1:new S(a.sub(s)).greaterThanOrEqual(t)}roughlyEquals(e,t){let n=this.start.sub(e.start).valueOf(),s=this.end.sub(e.end).valueOf();return n<0&&(n=-n),s<0&&(s=-s),n<=t.valueOf()&&s<=t.valueOf()}contains(e){return e instanceof ne?this.contains(e.start)&&this.contains(e.end):this.start.beforeEq(e)&&this.end.after(e)}boundBy(e){const t=new ne(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}};u(z,"MAX",new z(O.MIN,O.MAX)),u(z,"MIN",new z(O.MAX,O.MIN)),u(z,"ZERO",new z(O.ZERO,O.ZERO)),u(z,"z",i.z.union([i.z.object({start:O.z,end:O.z}).transform(r=>new z(r.start,r.end)),i.z.instanceof(z)]));let ve=z;const o=class M extends String{constructor(e){if(e instanceof M||typeof e=="string"||typeof e.valueOf()=="string"){super(e.valueOf());return}else{const t=M.ARRAY_CONSTRUCTOR_DATA_TYPES.get(e.constructor.name);if(t!=null){super(t.valueOf());return}}throw super(M.UNKNOWN.valueOf()),new Error(`unable to find data type for ${e.toString()}`)}get Array(){const e=M.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(M.JSON)||this.equals(M.STRING)}get isNumeric(){return!this.isVariable&&!this.equals(M.UUID)}get isInteger(){return this.toString().startsWith("int")}get isFloat(){return this.toString().startsWith("float")}get density(){const e=M.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.density.valueOf():this.isFloat&&e.isFloat||this.isInteger&&e.isInteger?this.density.valueOf()<=e.density.valueOf():!1}canCastTo(e){return this.isNumeric&&e.isNumeric?!0:this.equals(e)}checkArray(e){return e.constructor===this.Array}toJSON(){return this.toString()}get usesBigInt(){return M.BIG_INT_TYPES.some(e=>e.equals(this))}};u(o,"UNKNOWN",new o("unknown")),u(o,"FLOAT64",new o("float64")),u(o,"FLOAT32",new o("float32")),u(o,"INT64",new o("int64")),u(o,"INT32",new o("int32")),u(o,"INT16",new o("int16")),u(o,"INT8",new o("int8")),u(o,"UINT64",new o("uint64")),u(o,"UINT32",new o("uint32")),u(o,"UINT16",new o("uint16")),u(o,"UINT8",new o("uint8")),u(o,"BOOLEAN",o.UINT8),u(o,"TIMESTAMP",new o("timestamp")),u(o,"UUID",new o("uuid")),u(o,"STRING",new o("string")),u(o,"JSON",new o("json")),u(o,"ARRAY_CONSTRUCTORS",new Map([[o.UINT8.toString(),Uint8Array],[o.UINT16.toString(),Uint16Array],[o.UINT32.toString(),Uint32Array],[o.UINT64.toString(),BigUint64Array],[o.FLOAT32.toString(),Float32Array],[o.FLOAT64.toString(),Float64Array],[o.INT8.toString(),Int8Array],[o.INT16.toString(),Int16Array],[o.INT32.toString(),Int32Array],[o.INT64.toString(),BigInt64Array],[o.TIMESTAMP.toString(),BigInt64Array],[o.STRING.toString(),Uint8Array],[o.JSON.toString(),Uint8Array],[o.UUID.toString(),Uint8Array]])),u(o,"ARRAY_CONSTRUCTOR_DATA_TYPES",new Map([[Uint8Array.name,o.UINT8],[Uint16Array.name,o.UINT16],[Uint32Array.name,o.UINT32],[BigUint64Array.name,o.UINT64],[Float32Array.name,o.FLOAT32],[Float64Array.name,o.FLOAT64],[Int8Array.name,o.INT8],[Int16Array.name,o.INT16],[Int32Array.name,o.INT32],[BigInt64Array.name,o.INT64]])),u(o,"DENSITIES",new Map([[o.UINT8.toString(),A.BIT8],[o.UINT16.toString(),A.BIT16],[o.UINT32.toString(),A.BIT32],[o.UINT64.toString(),A.BIT64],[o.FLOAT32.toString(),A.BIT32],[o.FLOAT64.toString(),A.BIT64],[o.INT8.toString(),A.BIT8],[o.INT16.toString(),A.BIT16],[o.INT32.toString(),A.BIT32],[o.INT64.toString(),A.BIT64],[o.TIMESTAMP.toString(),A.BIT64],[o.STRING.toString(),A.UNKNOWN],[o.JSON.toString(),A.UNKNOWN],[o.UUID.toString(),A.BIT128]])),u(o,"ALL",[o.UNKNOWN,o.FLOAT64,o.FLOAT32,o.INT64,o.INT32,o.INT16,o.INT8,o.UINT64,o.UINT32,o.UINT16,o.UINT8,o.TIMESTAMP,o.UUID,o.STRING,o.JSON]),u(o,"BIG_INT_TYPES",[o.INT64,o.UINT64,o.TIMESTAMP]),u(o,"z",i.z.union([i.z.string().transform(r=>new o(r)),i.z.instanceof(o)]));let b=o;const N=class v extends Number{constructor(e){super(e.valueOf())}largerThan(e){return this.valueOf()>e.valueOf()}smallerThan(e){return this.valueOf()<e.valueOf()}add(e){return v.bytes(this.valueOf()+e.valueOf())}sub(e){return v.bytes(this.valueOf()-e.valueOf())}truncate(e){return new v(Math.trunc(this.valueOf()/e.valueOf())*e.valueOf())}remainder(e){return v.bytes(this.valueOf()%e.valueOf())}get gigabytes(){return this.valueOf()/v.GIGABYTE.valueOf()}get megabytes(){return this.valueOf()/v.MEGABYTE.valueOf()}get kilobytes(){return this.valueOf()/v.KILOBYTE.valueOf()}get terabytes(){return this.valueOf()/v.TERABYTE.valueOf()}toString(){const e=this.truncate(v.TERABYTE),t=this.truncate(v.GIGABYTE),n=this.truncate(v.MEGABYTE),s=this.truncate(v.KILOBYTE),a=this.truncate(v.BYTE),c=e,d=t.sub(e),f=n.sub(t),y=s.sub(n),T=a.sub(s);let l="";return c.isZero||(l+=`${c.terabytes}TB `),d.isZero||(l+=`${d.gigabytes}GB `),f.isZero||(l+=`${f.megabytes}MB `),y.isZero||(l+=`${y.kilobytes}KB `),(!T.isZero||l==="")&&(l+=`${T.valueOf()}B`),l.trim()}static bytes(e=1){return new v(e)}static kilobytes(e=1){return v.bytes(e.valueOf()*1e3)}static megabytes(e=1){return v.kilobytes(e.valueOf()*1e3)}static gigabytes(e=1){return v.megabytes(e.valueOf()*1e3)}static terabytes(e){return v.gigabytes(e.valueOf()*1e3)}get isZero(){return this.valueOf()===0}};u(N,"BYTE",new N(1)),u(N,"KILOBYTE",N.kilobytes(1)),u(N,"MEGABYTE",N.megabytes(1)),u(N,"GIGABYTE",N.gigabytes(1)),u(N,"TERABYTE",N.terabytes(1)),u(N,"ZERO",new N(0)),u(N,"z",i.z.union([i.z.number().transform(r=>new N(r)),i.z.instanceof(N)]));let ye=N;i.z.union([i.z.instanceof(Uint8Array),i.z.instanceof(Uint16Array),i.z.instanceof(Uint32Array),i.z.instanceof(BigUint64Array),i.z.instanceof(Float32Array),i.z.instanceof(Float64Array),i.z.instanceof(Int8Array),i.z.instanceof(Int16Array),i.z.instanceof(Int32Array),i.z.instanceof(BigInt64Array)]);const rt=r=>{const e=typeof r;return e==="string"||e==="number"||e==="boolean"||e==="bigint"||r instanceof O||r instanceof S||r instanceof Date},ar=(r,e,t,n=0)=>r.usesBigInt&&!e.usesBigInt?Number(t)-Number(n):!r.usesBigInt&&e.usesBigInt?BigInt(t.valueOf())-BigInt(n.valueOf()):H(t,-n).valueOf(),or=r=>r==null?!1:Array.isArray(r)||r instanceof ArrayBuffer||ArrayBuffer.isView(r)&&!(r instanceof DataView)||r instanceof lr?!0:rt(r),L=-1,ur=i.z.string().transform(r=>new Uint8Array(atob(r).split("").map(e=>e.charCodeAt(0))).buffer),cr=i.z.union([i.z.null(),i.z.undefined()]).transform(()=>new Uint8Array().buffer),me=10,J=class B{constructor(e){u(this,"key",""),u(this,"isSynnaxSeries",!0),u(this,"dataType"),u(this,"sampleOffset"),u(this,"gl"),u(this,"_data"),u(this,"_timeRange"),u(this,"alignment",0n),u(this,"_cachedMin"),u(this,"_cachedMax"),u(this,"writePos",L),u(this,"_refCount",0),u(this,"_cachedLength"),u(this,"_cachedIndexes"),or(e)&&(e={data:e});const{dataType:t,timeRange:n,sampleOffset:s=0,glBufferUsage:a="static",alignment:c=0n,key:d=sr()}=e,f=e.data??[];if(f instanceof B||typeof f=="object"&&"isSynnaxSeries"in f&&f.isSynnaxSeries===!0){const l=f;this.key=l.key,this.dataType=l.dataType,this.sampleOffset=l.sampleOffset,this.gl=l.gl,this._data=l._data,this._timeRange=l._timeRange,this.alignment=l.alignment,this._cachedMin=l._cachedMin,this._cachedMax=l._cachedMax,this.writePos=l.writePos,this._refCount=l._refCount,this._cachedLength=l._cachedLength;return}const y=rt(f),T=Array.isArray(f);if(t!=null)this.dataType=new b(t);else{if(f instanceof ArrayBuffer)throw new Error("cannot infer data type from an ArrayBuffer instance when constructing a Series. Please provide a data type.");if(T||y){let l=f;if(!y){if(f.length===0)throw new Error("cannot infer data type from a zero length JS array when constructing a Series. Please provide a data type.");l=f[0]}if(typeof l=="string")this.dataType=b.STRING;else if(typeof l=="number")this.dataType=b.FLOAT64;else if(typeof l=="bigint")this.dataType=b.INT64;else if(typeof l=="boolean")this.dataType=b.BOOLEAN;else if(l instanceof O||l instanceof Date||l instanceof O)this.dataType=b.TIMESTAMP;else if(typeof l=="object")this.dataType=b.JSON;else throw new Error(`cannot infer data type of ${typeof l} when constructing a Series from a JS array`)}else this.dataType=new b(f)}if(!T&&!y)this._data=f;else{let l=y?[f]:f;const E=l[0];(E instanceof O||E instanceof Date||E instanceof S)&&(l=l.map(R=>new O(R).valueOf())),this.dataType.equals(b.STRING)?(this._cachedLength=l.length,this._data=new TextEncoder().encode(l.join(`
|
|
4
|
-
`)
|
|
5
|
-
`)):this.dataType.equals(b.JSON)?(this._cachedLength=l.length,this._data=new TextEncoder().encode(l.map(
|
|
6
|
-
`)
|
|
7
|
-
`)):this._data=new this.dataType.Array(l).buffer}this.key=d,this.alignment=c,this.sampleOffset=s??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 s=new new b(t).Array(e),a=new
|
|
8
|
-
`)
|
|
9
|
-
`);return new
|
|
10
|
-
`)
|
|
11
|
-
`);return new
|
|
3
|
+
`).map(d=>d.trim());if(n.length===0)return t!=null?t.parse({}):{};const a=n.split(",").map(d=>d.trim()),c={};return a.forEach(d=>{c[d]=[]}),s.forEach(d=>{const f=d.split(",").map(y=>y.trim());a.forEach((y,T)=>{const l=this.parseValue(f[T]);l!=null&&c[y].push(l)})}),t!=null?t.parse(c):c}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(){}},Ot=class{constructor(){Q(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 te=new bt;new Tt;new Ot;const oe=i.z.tuple([i.z.number(),i.z.number()]);i.z.tuple([i.z.bigint(),i.z.bigint()]);const Je=i.z.object({width:i.z.number(),height:i.z.number()}),vt=i.z.object({signedWidth:i.z.number(),signedHeight:i.z.number()}),St=["width","height"];i.z.enum(St);const It=["start","center","end"],Nt=["signedWidth","signedHeight"];i.z.enum(Nt);const ie=i.z.object({x:i.z.number(),y:i.z.number()}),Et=i.z.object({clientX:i.z.number(),clientY:i.z.number()}),At=["x","y"],He=i.z.enum(At),Ke=["top","right","bottom","left"];i.z.enum(Ke);const xt=["left","right"],Xe=i.z.enum(xt),zt=["top","bottom"],Qe=i.z.enum(zt),_e=["center"],xe=i.z.enum(_e),Mt=[...Ke,..._e],et=i.z.enum(Mt);i.z.enum(It);const $t=["first","last"];i.z.enum($t);const Bt=i.z.object({lower:i.z.number(),upper:i.z.number()}),Rt=i.z.object({lower:i.z.bigint(),upper:i.z.bigint()});i.z.union([Bt,oe]);i.z.union([Rt,oe]);i.z.union([He,et]);i.z.union([He,et,i.z.instanceof(String)]);const Ut=r=>typeof r=="bigint"||r instanceof BigInt,j=(r,e)=>Ut(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 ze(r);return ze(t)},ze=r=>r.lower>r.upper?{lower:r.upper,upper:r.lower}:r,Me=(r,e)=>{const t=k(r);return e<t.lower?t.lower:e>=t.upper?t.upper-(typeof t.upper=="number"?1:1n):e};i.z.object({x:Xe.or(xe),y:Qe.or(xe)});const Ct=i.z.object({x:Xe,y:Qe}),Dt=Object.freeze({x:"left",y:"top"}),Pt=(r,e)=>r.x===e.x&&r.y===e.y,$e=i.z.union([i.z.number(),ie,oe,Je,vt,Et]),Lt=(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}},Be=Object.freeze({x:0,y:0}),ee=i.z.union([i.z.number(),i.z.string()]);i.z.object({top:ee,left:ee,width:ee,height:ee});i.z.object({left:i.z.number(),top:i.z.number(),right:i.z.number(),bottom:i.z.number()});i.z.object({one:ie,two:ie,root:Ct});const Oe=(r,e,t=0,n=0,s)=>{const a={one:{...Be},two:{...Be},root:s??Dt};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:s??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))},he=r=>{const e=Oe(r);return{lower:e.one.x,upper:e.two.x}},de=r=>{const e=Oe(r);return{lower:e.one.y,upper:e.two.y}},Yt=r=>typeof r!="object"||r==null?!1:"one"in r&&"two"in r&&"root"in r;var kt=Object.defineProperty,jt=(r,e,t)=>e in r?kt(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,C=(r,e,t)=>jt(r,typeof e!="symbol"?e+"":e,t);const Ft=(r,e,t)=>e!==void 0&&r<e?e:t!==void 0&&r>t?t:r;i.z.object({offset:$e,scale:$e});const qt=r=>(e,t,n,s)=>t==="dimension"?[e,n]:[e,s?n-r:n+r],Gt=r=>(e,t,n,s)=>[e,s?n/r:n*r],Wt=r=>(e,t,n)=>{if(e===null)return[r,n];const{lower:s,upper:a}=e,{lower:c,upper:d}=r,f=a-s,y=d-c;if(t==="dimension")return[r,n*(y/f)];const T=(n-s)*(y/f)+c;return[r,T]},Vt=r=>(e,t,n)=>[r,n],Zt=()=>(r,e,t)=>{if(r===null)throw new Error("cannot invert without bounds");if(e==="dimension")return[r,t];const{lower:n,upper:s}=r;return[r,s-(t-n)]},Jt=r=>(e,t,n)=>{const{lower:s,upper:a}=r;return n=Ft(n,s,a),[e,n]},pe=class V{constructor(){C(this,"ops",[]),C(this,"currBounds",null),C(this,"currType",null),C(this,"reversed",!1),this.ops=[]}static translate(e){return new V().translate(e)}static magnify(e){return new V().magnify(e)}static scale(e,t){return new V().scale(e,t)}translate(e){const t=this.new(),n=qt(e);return n.type="translate",t.ops.push(n),t}magnify(e){const t=this.new(),n=Gt(e);return n.type="magnify",t.ops.push(n),t}scale(e,t){const n=k(e,t),s=this.new(),a=Wt(n);return a.type="scale",s.ops.push(a),s}clamp(e,t){const n=k(e,t),s=this.new(),a=Jt(n);return a.type="clamp",s.ops.push(a),s}reBound(e,t){const n=k(e,t),s=this.new(),a=Vt(n);return a.type="re-bound",s.ops.push(a),s}invert(){const e=Zt();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 V;return e.ops=this.ops.slice(),e.reversed=this.reversed,e}exec(e,t){return this.currBounds=null,this.ops.reduce(([n,s],a)=>a(n,e,s,this.reversed),[null,t])[1]}reverse(){const e=this.new();e.ops.reverse();const t=[];return e.ops.forEach((n,s)=>{if(n.type==="scale"||t.some(([c,d])=>s>=c&&s<=d))return;const a=e.ops.findIndex((c,d)=>c.type==="scale"&&d>s);a!==-1&&t.push([s,a])}),t.forEach(([n,s])=>{const a=e.ops.slice(n,s);a.unshift(e.ops[s]),e.ops.splice(n,s-n+1,...a)}),e.reversed=!e.reversed,e}};C(pe,"IDENTITY",new pe);let Re=pe;const Ue=class U{constructor(e=new Re,t=new Re,n=null){C(this,"x"),C(this,"y"),C(this,"currRoot"),this.x=e,this.y=t,this.currRoot=n}static translate(e,t){return new U().translate(e,t)}static translateX(e){return new U().translateX(e)}static translateY(e){return new U().translateY(e)}static clamp(e){return new U().clamp(e)}static magnify(e){return new U().magnify(e)}static scale(e){return new U().scale(e)}static reBound(e){return new U().reBound(e)}translate(e,t){const n=Lt(e,t),s=this.copy();return s.x=this.x.translate(n.x),s.y=this.y.translate(n.y),s}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(Yt(e)){const n=this.currRoot;return t.currRoot=e.root,n!=null&&!Pt(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(he(e)),t.y=t.y.scale(de(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(he(e)),t.y=this.y.reBound(de(e)),t}clamp(e){const t=this.copy();return t.x=this.x.clamp(he(e)),t.y=this.y.clamp(de(e)),t}copy(){const e=new U;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)}}box(e){return Oe(this.pos(e.one),this.pos(e.two),0,0,this.currRoot??e.root)}};C(Ue,"IDENTITY",new Ue);const Ht=r=>r!=null&&typeof r=="object"&&"toString"in r,Kt=(r,e=!1)=>{const t=Ht(r)?"stringer":typeof r;let n;switch(t){case"string":n=(s,a)=>s.localeCompare(a);break;case"stringer":n=(s,a)=>s.toString().localeCompare(a.toString());break;case"number":n=(s,a)=>Number(s)-Number(a);break;case"bigint":n=(s,a)=>BigInt(s)-BigInt(a)>0n?1:-1;break;case"boolean":n=(s,a)=>Number(s)-Number(a);break;case"undefined":n=()=>0;break;default:return console.warn(`sortFunc: unknown type ${t}`),()=>-1}return e?Xt(n):n},Xt=r=>(e,t)=>r(t,e),Qt=i.z.object({signedWidth:i.z.number(),signedHeight:i.z.number()});i.z.union([Je,Qt,ie,oe]);const _t=i.z.bigint().or(i.z.string().transform(BigInt));var er=Object.defineProperty,tr=(r,e,t)=>e in r?er(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,u=(r,e,t)=>tr(r,typeof e!="symbol"?e+"":e,t);let rr=(r,e=21)=>(t=e)=>{let n="",s=t;for(;s--;)n+=r[Math.random()*r.length|0];return n};const nr="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",sr=rr(nr,11),ir=i.z.enum(["static","dynamic"]),tt=(r,e)=>{const t=new O(e);if(![S.DAY,S.HOUR,S.MINUTE,S.SECOND,S.MILLISECOND,S.MICROSECOND,S.NANOSECOND].some(s=>s.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 O?new O(n):new S(n)},m=class h{constructor(e,t="UTC"){if(u(this,"value"),u(this,"encodeValue",!0),e==null)this.value=h.now().valueOf();else if(e instanceof Date)this.value=BigInt(e.getTime())*h.MILLISECOND.valueOf();else if(typeof e=="string")this.value=h.parseDateTimeString(e,t).valueOf();else if(Array.isArray(e))this.value=h.parseDate(e);else{let n=BigInt(0);e instanceof Number&&(e=e.valueOf()),t==="local"&&(n=h.utcOffset.valueOf()),typeof e=="number"&&(isFinite(e)?e=Math.trunc(e):(isNaN(e)&&(e=0),e===1/0?e=h.MAX:e=h.MIN)),this.value=BigInt(e.valueOf())+n}}static parseDate([e=1970,t=1,n=1]){const s=new Date(e,t-1,n,0,0,0,0);return new h(BigInt(s.getTime())*h.MILLISECOND.valueOf()).truncate(h.DAY).valueOf()}encode(){return this.value.toString()}valueOf(){return this.value}static parseTimeString(e,t="UTC"){const[n,s,a]=e.split(":");let c="00",d="00";a!=null&&([c,d]=a.split("."));let f=h.hours(parseInt(n??"00")).add(h.minutes(parseInt(s??"00"))).add(h.seconds(parseInt(c??"00"))).add(h.milliseconds(parseInt(d??"00")));return t==="local"&&(f=f.add(h.utcOffset)),f.valueOf()}static parseDateTimeString(e,t="UTC"){if(!e.includes("/")&&!e.includes("-"))return h.parseTimeString(e,t);const n=new Date(e);return e.includes(":")||n.setUTCHours(0,0,0,0),new h(BigInt(n.getTime())*h.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(h.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 S(BigInt(new Date().getTimezoneOffset())*h.MINUTE.valueOf())}static since(e){return new h().span(e)}date(){return new Date(this.milliseconds())}equals(e){return this.valueOf()===new h(e).valueOf()}span(e){return this.range(e).span}range(e){return new ve(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 h(e).valueOf()}afterEq(e){return this.valueOf()>=new h(e).valueOf()}before(e){return this.valueOf()<new h(e).valueOf()}beforeEq(e){return this.valueOf()<=new h(e).valueOf()}add(e){return new h(this.valueOf()+BigInt(e.valueOf()))}sub(e){return new h(this.valueOf()-BigInt(e.valueOf()))}milliseconds(){return Number(this.valueOf())/Number(h.MILLISECOND.valueOf())}toString(){return this.date().toISOString()}remainder(e){return tt(this,e)}get isToday(){return this.truncate(S.DAY).equals(h.now().truncate(S.DAY))}truncate(e){return this.sub(this.remainder(e))}static now(){return new h(new Date)}static max(...e){let t=h.MIN;for(const n of e){const s=new h(n);s.after(t)&&(t=s)}return t}static min(...e){let t=h.MAX;for(const n of e){const s=new h(n);s.before(t)&&(t=s)}return t}static nanoseconds(e){return new h(e)}static microseconds(e){return h.nanoseconds(e*1e3)}static milliseconds(e){return h.microseconds(e*1e3)}static seconds(e){return h.milliseconds(e*1e3)}static minutes(e){return h.seconds(e*60)}static hours(e){return h.minutes(e*60)}static days(e){return h.hours(e*24)}};u(m,"NANOSECOND",m.nanoseconds(1)),u(m,"MICROSECOND",m.microseconds(1)),u(m,"MILLISECOND",m.milliseconds(1)),u(m,"SECOND",m.seconds(1)),u(m,"MINUTE",m.minutes(1)),u(m,"HOUR",m.hours(1)),u(m,"DAY",m.days(1)),u(m,"MAX",new m((1n<<63n)-1n)),u(m,"MIN",new m(0)),u(m,"ZERO",new m(0)),u(m,"z",i.z.union([i.z.object({value:i.z.bigint()}).transform(r=>new m(r.value)),i.z.string().transform(r=>new m(BigInt(r))),i.z.instanceof(Number).transform(r=>new m(r)),i.z.number().transform(r=>new m(r)),i.z.instanceof(m)]));let O=m;const w=class g{constructor(e){u(this,"value"),u(this,"encodeValue",!0),typeof e=="number"&&(e=Math.trunc(e.valueOf())),this.value=BigInt(e.valueOf())}static fromSeconds(e){return e instanceof g?e:e instanceof Ce?e.period:e instanceof O?new g(e):["number","bigint"].includes(typeof e)?g.seconds(e):new g(e)}static fromMilliseconds(e){return e instanceof g?e:e instanceof Ce?e.period:e instanceof O?new g(e):["number","bigint"].includes(typeof e)?g.milliseconds(e):new g(e)}encode(){return this.value.toString()}valueOf(){return this.value}lessThan(e){return this.valueOf()<new g(e).valueOf()}greaterThan(e){return this.valueOf()>new g(e).valueOf()}lessThanOrEqual(e){return this.valueOf()<=new g(e).valueOf()}greaterThanOrEqual(e){return this.valueOf()>=new g(e).valueOf()}remainder(e){return tt(this,e)}truncate(e){return new g(BigInt(Math.trunc(Number(this.valueOf()/e.valueOf())))*e.valueOf())}toString(){const e=this.truncate(g.DAY),t=this.truncate(g.HOUR),n=this.truncate(g.MINUTE),s=this.truncate(g.SECOND),a=this.truncate(g.MILLISECOND),c=this.truncate(g.MICROSECOND),d=this.truncate(g.NANOSECOND),f=e,y=t.sub(e),T=n.sub(t),l=s.sub(n),E=a.sub(s),B=c.sub(a),R=d.sub(c);let x="";return f.isZero||(x+=`${f.days}d `),y.isZero||(x+=`${y.hours}h `),T.isZero||(x+=`${T.minutes}m `),l.isZero||(x+=`${l.seconds}s `),E.isZero||(x+=`${E.milliseconds}ms `),B.isZero||(x+=`${B.microseconds}µs `),R.isZero||(x+=`${R.nanoseconds}ns`),x.trim()}get days(){return Number(this.valueOf())/Number(g.DAY.valueOf())}get hours(){return Number(this.valueOf())/Number(g.HOUR.valueOf())}get minutes(){return Number(this.valueOf())/Number(g.MINUTE.valueOf())}get seconds(){return Number(this.valueOf())/Number(g.SECOND.valueOf())}get milliseconds(){return Number(this.valueOf())/Number(g.MILLISECOND.valueOf())}get microseconds(){return Number(this.valueOf())/Number(g.MICROSECOND.valueOf())}get nanoseconds(){return Number(this.valueOf())}get isZero(){return this.valueOf()===BigInt(0)}equals(e){return this.valueOf()===new g(e).valueOf()}add(e){return new g(this.valueOf()+new g(e).valueOf())}sub(e){return new g(this.valueOf()-new g(e).valueOf())}static nanoseconds(e=1){return new g(e)}static microseconds(e=1){return g.nanoseconds(j(e,1e3))}static milliseconds(e=1){return g.microseconds(j(e,1e3))}static seconds(e=1){return g.milliseconds(j(e,1e3))}static minutes(e=1){return g.seconds(j(e,60))}static hours(e){return g.minutes(j(e,60))}static days(e){return g.hours(j(e,24))}};u(w,"NANOSECOND",w.nanoseconds(1)),u(w,"MICROSECOND",w.microseconds(1)),u(w,"MILLISECOND",w.milliseconds(1)),u(w,"SECOND",w.seconds(1)),u(w,"MINUTE",w.minutes(1)),u(w,"HOUR",w.hours(1)),u(w,"DAY",w.days(1)),u(w,"MAX",new w((1n<<63n)-1n)),u(w,"MIN",new w(0)),u(w,"ZERO",new w(0)),u(w,"z",i.z.union([i.z.object({value:i.z.bigint()}).transform(r=>new w(r.value)),i.z.string().transform(r=>new w(BigInt(r))),i.z.instanceof(Number).transform(r=>new w(r)),i.z.number().transform(r=>new w(r)),i.z.instanceof(w)]));let S=w;const Z=class re extends Number{constructor(e){e instanceof Number?super(e.valueOf()):super(e)}toString(){return`${this.valueOf()} Hz`}equals(e){return this.valueOf()===new re(e).valueOf()}get period(){return S.seconds(1/this.valueOf())}sampleCount(e){return new S(e).seconds*this.valueOf()}byteCount(e,t){return this.sampleCount(e)*new A(t).valueOf()}span(e){return S.seconds(e/this.valueOf())}byteSpan(e,t){return this.span(e.valueOf()/t.valueOf())}static hz(e){return new re(e)}static khz(e){return re.hz(e*1e3)}};u(Z,"z",i.z.union([i.z.number().transform(r=>new Z(r)),i.z.instanceof(Number).transform(r=>new Z(r)),i.z.instanceof(Z)]));let Ce=Z;const I=class extends Number{constructor(e){e instanceof Number?super(e.valueOf()):super(e)}length(e){return e.valueOf()/this.valueOf()}size(e){return new ye(e*this.valueOf())}};u(I,"UNKNOWN",new I(0)),u(I,"BIT128",new I(16)),u(I,"BIT64",new I(8)),u(I,"BIT32",new I(4)),u(I,"BIT16",new I(2)),u(I,"BIT8",new I(1)),u(I,"z",i.z.union([i.z.number().transform(r=>new I(r)),i.z.instanceof(Number).transform(r=>new I(r)),i.z.instanceof(I)]));let A=I;const z=class ne{constructor(e,t){u(this,"start"),u(this,"end"),typeof e=="object"&&"start"in e?(this.start=new O(e.start),this.end=new O(e.end)):(this.start=new O(e),this.end=new O(t))}get span(){return new S(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 ne(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=S.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 s=O.max(n.start,e.start),a=O.min(n.end,e.end);return a.before(s)?!1:new S(a.sub(s)).greaterThanOrEqual(t)}roughlyEquals(e,t){let n=this.start.sub(e.start).valueOf(),s=this.end.sub(e.end).valueOf();return n<0&&(n=-n),s<0&&(s=-s),n<=t.valueOf()&&s<=t.valueOf()}contains(e){return e instanceof ne?this.contains(e.start)&&this.contains(e.end):this.start.beforeEq(e)&&this.end.after(e)}boundBy(e){const t=new ne(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}};u(z,"MAX",new z(O.MIN,O.MAX)),u(z,"MIN",new z(O.MAX,O.MIN)),u(z,"ZERO",new z(O.ZERO,O.ZERO)),u(z,"z",i.z.union([i.z.object({start:O.z,end:O.z}).transform(r=>new z(r.start,r.end)),i.z.instanceof(z)]));let ve=z;const o=class M extends String{constructor(e){if(e instanceof M||typeof e=="string"||typeof e.valueOf()=="string"){super(e.valueOf());return}const t=M.ARRAY_CONSTRUCTOR_DATA_TYPES.get(e.constructor.name);if(t!=null){super(t.valueOf());return}throw super(M.UNKNOWN.valueOf()),new Error(`unable to find data type for ${e.toString()}`)}get Array(){const e=M.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(M.JSON)||this.equals(M.STRING)}get isNumeric(){return!this.isVariable&&!this.equals(M.UUID)}get isInteger(){return this.toString().startsWith("int")}get isFloat(){return this.toString().startsWith("float")}get density(){const e=M.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.density.valueOf():this.isFloat&&e.isFloat||this.isInteger&&e.isInteger?this.density.valueOf()<=e.density.valueOf():!1}canCastTo(e){return this.isNumeric&&e.isNumeric?!0:this.equals(e)}checkArray(e){return e.constructor===this.Array}toJSON(){return this.toString()}get usesBigInt(){return M.BIG_INT_TYPES.some(e=>e.equals(this))}};u(o,"UNKNOWN",new o("unknown")),u(o,"FLOAT64",new o("float64")),u(o,"FLOAT32",new o("float32")),u(o,"INT64",new o("int64")),u(o,"INT32",new o("int32")),u(o,"INT16",new o("int16")),u(o,"INT8",new o("int8")),u(o,"UINT64",new o("uint64")),u(o,"UINT32",new o("uint32")),u(o,"UINT16",new o("uint16")),u(o,"UINT8",new o("uint8")),u(o,"BOOLEAN",o.UINT8),u(o,"TIMESTAMP",new o("timestamp")),u(o,"UUID",new o("uuid")),u(o,"STRING",new o("string")),u(o,"JSON",new o("json")),u(o,"ARRAY_CONSTRUCTORS",new Map([[o.UINT8.toString(),Uint8Array],[o.UINT16.toString(),Uint16Array],[o.UINT32.toString(),Uint32Array],[o.UINT64.toString(),BigUint64Array],[o.FLOAT32.toString(),Float32Array],[o.FLOAT64.toString(),Float64Array],[o.INT8.toString(),Int8Array],[o.INT16.toString(),Int16Array],[o.INT32.toString(),Int32Array],[o.INT64.toString(),BigInt64Array],[o.TIMESTAMP.toString(),BigInt64Array],[o.STRING.toString(),Uint8Array],[o.JSON.toString(),Uint8Array],[o.UUID.toString(),Uint8Array]])),u(o,"ARRAY_CONSTRUCTOR_DATA_TYPES",new Map([[Uint8Array.name,o.UINT8],[Uint16Array.name,o.UINT16],[Uint32Array.name,o.UINT32],[BigUint64Array.name,o.UINT64],[Float32Array.name,o.FLOAT32],[Float64Array.name,o.FLOAT64],[Int8Array.name,o.INT8],[Int16Array.name,o.INT16],[Int32Array.name,o.INT32],[BigInt64Array.name,o.INT64]])),u(o,"DENSITIES",new Map([[o.UINT8.toString(),A.BIT8],[o.UINT16.toString(),A.BIT16],[o.UINT32.toString(),A.BIT32],[o.UINT64.toString(),A.BIT64],[o.FLOAT32.toString(),A.BIT32],[o.FLOAT64.toString(),A.BIT64],[o.INT8.toString(),A.BIT8],[o.INT16.toString(),A.BIT16],[o.INT32.toString(),A.BIT32],[o.INT64.toString(),A.BIT64],[o.TIMESTAMP.toString(),A.BIT64],[o.STRING.toString(),A.UNKNOWN],[o.JSON.toString(),A.UNKNOWN],[o.UUID.toString(),A.BIT128]])),u(o,"ALL",[o.UNKNOWN,o.FLOAT64,o.FLOAT32,o.INT64,o.INT32,o.INT16,o.INT8,o.UINT64,o.UINT32,o.UINT16,o.UINT8,o.TIMESTAMP,o.UUID,o.STRING,o.JSON]),u(o,"BIG_INT_TYPES",[o.INT64,o.UINT64,o.TIMESTAMP]),u(o,"z",i.z.union([i.z.string().transform(r=>new o(r)),i.z.instanceof(o)]));let b=o;const N=class v extends Number{constructor(e){super(e.valueOf())}largerThan(e){return this.valueOf()>e.valueOf()}smallerThan(e){return this.valueOf()<e.valueOf()}add(e){return v.bytes(this.valueOf()+e.valueOf())}sub(e){return v.bytes(this.valueOf()-e.valueOf())}truncate(e){return new v(Math.trunc(this.valueOf()/e.valueOf())*e.valueOf())}remainder(e){return v.bytes(this.valueOf()%e.valueOf())}get gigabytes(){return this.valueOf()/v.GIGABYTE.valueOf()}get megabytes(){return this.valueOf()/v.MEGABYTE.valueOf()}get kilobytes(){return this.valueOf()/v.KILOBYTE.valueOf()}get terabytes(){return this.valueOf()/v.TERABYTE.valueOf()}toString(){const e=this.truncate(v.TERABYTE),t=this.truncate(v.GIGABYTE),n=this.truncate(v.MEGABYTE),s=this.truncate(v.KILOBYTE),a=this.truncate(v.BYTE),c=e,d=t.sub(e),f=n.sub(t),y=s.sub(n),T=a.sub(s);let l="";return c.isZero||(l+=`${c.terabytes}TB `),d.isZero||(l+=`${d.gigabytes}GB `),f.isZero||(l+=`${f.megabytes}MB `),y.isZero||(l+=`${y.kilobytes}KB `),(!T.isZero||l==="")&&(l+=`${T.valueOf()}B`),l.trim()}static bytes(e=1){return new v(e)}static kilobytes(e=1){return v.bytes(e.valueOf()*1e3)}static megabytes(e=1){return v.kilobytes(e.valueOf()*1e3)}static gigabytes(e=1){return v.megabytes(e.valueOf()*1e3)}static terabytes(e){return v.gigabytes(e.valueOf()*1e3)}get isZero(){return this.valueOf()===0}};u(N,"BYTE",new N(1)),u(N,"KILOBYTE",N.kilobytes(1)),u(N,"MEGABYTE",N.megabytes(1)),u(N,"GIGABYTE",N.gigabytes(1)),u(N,"TERABYTE",N.terabytes(1)),u(N,"ZERO",new N(0)),u(N,"z",i.z.union([i.z.number().transform(r=>new N(r)),i.z.instanceof(N)]));let ye=N;i.z.union([i.z.instanceof(Uint8Array),i.z.instanceof(Uint16Array),i.z.instanceof(Uint32Array),i.z.instanceof(BigUint64Array),i.z.instanceof(Float32Array),i.z.instanceof(Float64Array),i.z.instanceof(Int8Array),i.z.instanceof(Int16Array),i.z.instanceof(Int32Array),i.z.instanceof(BigInt64Array)]);const rt=r=>{const e=typeof r;return e==="string"||e==="number"||e==="boolean"||e==="bigint"||r instanceof O||r instanceof S||r instanceof Date},ar=(r,e,t,n=0)=>r.usesBigInt&&!e.usesBigInt?Number(t)-Number(n):!r.usesBigInt&&e.usesBigInt?BigInt(t.valueOf())-BigInt(n.valueOf()):H(t,-n).valueOf(),or=r=>r==null?!1:Array.isArray(r)||r instanceof ArrayBuffer||ArrayBuffer.isView(r)&&!(r instanceof DataView)||r instanceof lr?!0:rt(r),L=-1,ur=i.z.string().transform(r=>new Uint8Array(atob(r).split("").map(e=>e.charCodeAt(0))).buffer),cr=i.z.union([i.z.null(),i.z.undefined()]).transform(()=>new Uint8Array().buffer),me=10,J=class ${constructor(e){u(this,"key",""),u(this,"isSynnaxSeries",!0),u(this,"dataType"),u(this,"sampleOffset"),u(this,"gl"),u(this,"_data"),u(this,"_timeRange"),u(this,"alignment",0n),u(this,"_cachedMin"),u(this,"_cachedMax"),u(this,"writePos",L),u(this,"_refCount",0),u(this,"_cachedLength"),u(this,"_cachedIndexes"),or(e)&&(e={data:e});const{dataType:t,timeRange:n,sampleOffset:s=0,glBufferUsage:a="static",alignment:c=0n,key:d=sr()}=e,f=e.data??[];if(f instanceof $||typeof f=="object"&&"isSynnaxSeries"in f&&f.isSynnaxSeries===!0){const l=f;this.key=l.key,this.dataType=l.dataType,this.sampleOffset=l.sampleOffset,this.gl=l.gl,this._data=l._data,this._timeRange=l._timeRange,this.alignment=l.alignment,this._cachedMin=l._cachedMin,this._cachedMax=l._cachedMax,this.writePos=l.writePos,this._refCount=l._refCount,this._cachedLength=l._cachedLength;return}const y=rt(f),T=Array.isArray(f);if(t!=null)this.dataType=new b(t);else{if(f instanceof ArrayBuffer)throw new Error("cannot infer data type from an ArrayBuffer instance when constructing a Series. Please provide a data type.");if(T||y){let l=f;if(!y){if(f.length===0)throw new Error("cannot infer data type from a zero length JS array when constructing a Series. Please provide a data type.");l=f[0]}if(typeof l=="string")this.dataType=b.STRING;else if(typeof l=="number")this.dataType=b.FLOAT64;else if(typeof l=="bigint")this.dataType=b.INT64;else if(typeof l=="boolean")this.dataType=b.BOOLEAN;else if(l instanceof O||l instanceof Date||l instanceof O)this.dataType=b.TIMESTAMP;else if(typeof l=="object")this.dataType=b.JSON;else throw new Error(`cannot infer data type of ${typeof l} when constructing a Series from a JS array`)}else this.dataType=new b(f)}if(!T&&!y)this._data=f;else{let l=y?[f]:f;const E=l[0];(E instanceof O||E instanceof Date||E instanceof S)&&(l=l.map(B=>new O(B).valueOf())),this.dataType.equals(b.STRING)?(this._cachedLength=l.length,this._data=new TextEncoder().encode(`${l.join(`
|
|
4
|
+
`)}
|
|
5
|
+
`)):this.dataType.equals(b.JSON)?(this._cachedLength=l.length,this._data=new TextEncoder().encode(`${l.map(B=>te.encodeString(B)).join(`
|
|
6
|
+
`)}
|
|
7
|
+
`)):this._data=new this.dataType.Array(l).buffer}this.key=d,this.alignment=c,this.sampleOffset=s??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 s=new new b(t).Array(e),a=new $({data:s.buffer,dataType:t,...n});return a.writePos=0,a}static generateTimestamps(e,t,n){const s=n.spanRange(t.span(e)),a=new BigInt64Array(e);for(let c=0;c<e;c++)a[c]=BigInt(n.add(t.span(c)).valueOf());return new $({data:a,dataType:b.TIMESTAMP,timeRange:s})}get refCount(){return this._refCount}static fromStrings(e,t){const n=new TextEncoder().encode(`${e.join(`
|
|
8
|
+
`)}
|
|
9
|
+
`);return new $({data:n,dataType:b.STRING,timeRange:t})}static fromJSON(e,t){const n=new TextEncoder().encode(`${e.map(s=>te.encodeString(s)).join(`
|
|
10
|
+
`)}
|
|
11
|
+
`);return new $({data:n,dataType:b.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===L)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===L)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===L?this.underlyingData:new this.dataType.Array(this._data,0,this.writePos)}toStrings(){if(!this.dataType.matches(b.STRING,b.UUID))throw new Error("cannot convert non-string series to strings");return new TextDecoder().decode(this.underlyingData).split(`
|
|
12
12
|
`).slice(0,-1)}toUUIDs(){if(!this.dataType.equals(b.UUID))throw new Error("cannot convert non-uuid series to uuids");const e=b.UUID.density.valueOf(),t=Array(this.length);for(let n=0;n<this.length;n++){const s=this.underlyingData.slice(n*e,(n+1)*e),a=Array.from(new Uint8Array(s),c=>c.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(b.JSON))throw new Error("cannot convert non-string series to strings");return new TextDecoder().decode(this.underlyingData).split(`
|
|
13
|
-
`).slice(0,-1).map(t=>e.parse(te.decodeString(t)))}get timeRange(){if(this._timeRange==null)throw new Error("time range not set on series");return this._timeRange}get byteCapacity(){return new ye(this.underlyingData.byteLength)}get capacity(){return this.dataType.isVariable?this.byteCapacity.valueOf():this.dataType.density.length(this.byteCapacity)}get byteLength(){return this.writePos===L?this.byteCapacity:this.dataType.isVariable?new ye(this.writePos):this.dataType.density.size(this.writePos)}get length(){return this._cachedLength!=null?this._cachedLength:this.dataType.isVariable?this.calculateCachedLength():this.writePos===L?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,s)=>{n===me&&(e++,t.push(s+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 s=0;s<this.length;s++)n[s]=ar(this.dataType,e,this.data[s],t);return new B({data:n.buffer,dataType:e,timeRange:this._timeRange,sampleOffset:t,glBufferUsage:this.gl.bufferUsage,alignment:this.alignment})}calcRawMax(){if(this.length===0)return-1/0;if(this.dataType.equals(b.TIMESTAMP))this._cachedMax=this.data[this.data.length-1];else if(this.dataType.usesBigInt){const e=this.data;this._cachedMax=e.reduce((t,n)=>t>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==null&&(this._cachedMax=this.calcRawMax()),H(this._cachedMax,this.sampleOffset))}calcRawMin(){if(this.length===0)return 1/0;if(this.dataType.equals(b.TIMESTAMP))this._cachedMin=this.data[0];else if(this.dataType.usesBigInt){const e=this.data;this._cachedMin=e.reduce((t,n)=>t<n?t:n)}else{const e=this.data;this._cachedMin=e.reduce((t,n)=>t<n?t:n)}return this._cachedMin}get min(){if(this.dataType.isVariable)throw new Error("cannot calculate minimum on a variable length data type");return this.writePos===0?1/0:(this._cachedMin==null&&(this._cachedMin=this.calcRawMin()),H(this._cachedMin,this.sampleOffset))}get bounds(){return k(Number(this.min),Number(this.max))}maybeRecomputeMinMax(e){if(this._cachedMin!=null){const t=e._cachedMin??e.calcRawMin();t<this._cachedMin&&(this._cachedMin=t)}if(this._cachedMax!=null){const t=e._cachedMax??e.calcRawMax();t>this._cachedMax&&(this._cachedMax=t)}}enrich(){this.max,this.min}get range(){return H(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 H(n,this.sampleOffset)}atVariable(e,t){let n=0,s=0;if(this._cachedIndexes!=null)n=this._cachedIndexes[e],s=this._cachedIndexes[e+1]-1;else{e<0&&(e=this.length+e);for(let c=0;c<this.data.length;c++)if(this.data[c]===me){if(e===0){s=c;break}n=c+1,e--}if(s===0&&(s=this.data.length),n>=s||e>0){if(t)throw new Error(`[series] - no value at index ${e}`);return}}const a=this.data.slice(n,s);return this.dataType.equals(b.STRING)?new TextDecoder().decode(a):Ve(JSON.parse(new TextDecoder().decode(a)))}binarySearch(e){let t=0,n=this.length-1;const s=Kt(e);for(;t<=n;){const a=Math.floor((t+n)/2),c=s(this.at(a,!0),e);if(c===0)return a;c<0?t=a+1:n=a-1}return t}updateGLBuffer(e){if(this.gl.control=e,!this.dataType.equals(b.FLOAT32))throw new Error("Only FLOAT32 arrays can be used in WebGL");const{buffer:t,bufferUsage:n,prevBuffer:s}=this.gl;if(t==null&&(this.gl.buffer=e.createBuffer()),this.writePos!==s)if(e.bindBuffer(e.ARRAY_BUFFER,this.gl.buffer),this.writePos!==L){s===0&&e.bufferData(e.ARRAY_BUFFER,this.byteCapacity.valueOf(),e.STATIC_DRAW);const a=this.dataType.density.size(s).valueOf(),c=this.underlyingData.slice(this.gl.prevBuffer,this.writePos);e.bufferSubData(e.ARRAY_BUFFER,a,c.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=L}as(e){if(e==="string"){if(!this.dataType.equals(b.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(b.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 hr(this);return this.dataType.equals(b.JSON)?new dr(e):e}return new fr(this)}slice(e,t){return this.sliceSub(!1,e,t)}sub(e,t){return this.sliceSub(!0,e,t)}subIterator(e,t){return new De(this,e,t??this.length)}subAlignmentIterator(e,t){return new De(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 B({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 s;return e?s=this.data.subarray(t,n):s=this.data.slice(t,n),new B({data:s,dataType:this.dataType,timeRange:this._timeRange,sampleOffset:this.sampleOffset,glBufferUsage:this.gl.bufferUsage,alignment:this.alignment+BigInt(t)})}reAlign(e){return new B({data:this.buffer,dataType:this.dataType,timeRange:ve.ZERO,sampleOffset:this.sampleOffset,glBufferUsage:"static",alignment:e})}};u(J,"crudeZ",i.z.object({timeRange:ve.z.optional(),dataType:b.z,alignment:_t.optional(),data:i.z.union([ur,cr,i.z.instanceof(ArrayBuffer)]),glBufferUsage:ir.optional().default("static").optional()})),u(J,"z",J.crudeZ.transform(r=>new J(r)));let lr=J;class De{constructor(e,t,n){u(this,"series"),u(this,"end"),u(this,"index"),this.series=e;const s=k(0,e.length);this.end=Me(s,n),this.index=Me(s,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 hr{constructor(e){if(u(this,"series"),u(this,"index"),u(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<t.length&&t[this.index]!==me;)this.index++;const n=this.index;return e===n?{done:!0,value:void 0}:(this.index++,{done:!1,value:this.decoder.decode(this.series.buffer.slice(e,n))})}[Symbol.iterator](){return this}}var Pe,Le;class dr{constructor(e){u(this,"wrapped"),u(this,Pe,"JSONSeriesIterator"),this.wrapped=e}next(){const e=this.wrapped.next();return e.done===!0?{done:!0,value:void 0}:{done:!1,value:te.decodeString(e.value)}}[(Le=Symbol.iterator,Pe=Symbol.toStringTag,Le)](){return this}}var Ye,ke;class fr{constructor(e){u(this,"series"),u(this,"index"),u(this,Ye,"SeriesIterator"),this.series=e,this.index=0}next(){return this.index>=this.series.length?{done:!0,value:void 0}:{done:!1,value:this.series.at(this.index++,!0)}}[(ke=Symbol.iterator,Ye=Symbol.toStringTag,ke)](){return this}}const H=(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);i.z.object({key:i.z.string(),value:i.z.string()});i.z.record(i.z.union([i.z.number(),i.z.string(),i.z.symbol()]),i.z.unknown());const nt=()=>typeof process<"u"&&process.versions!=null&&process.versions.node!=null?"node":typeof window>"u"||window.document===void 0?"webworker":"browser",gr=nt(),st=["MacOS","Windows","Linux","Docker"],pr=i.z.enum(st);let fe;const yr=()=>{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"},mr=(r={})=>{const{force:e,default:t}=r;return e??fe??(fe=yr(),fe??t)},it=Object.freeze(Object.defineProperty({__proto__:null,OPERATING_SYSTEMS:st,RUNTIME:gr,detect:nt,getOS:mr,osZ:pr},Symbol.toStringTag,{value:"Module"}));var wr=Object.defineProperty,br=(r,e,t)=>e in r?wr(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,K=(r,e,t)=>br(r,typeof e!="symbol"?e+"":e,t);const Tr=(...r)=>r.map(at).join(""),at=r=>(r.endsWith("/")||(r+="/"),r.startsWith("/")&&(r=r.slice(1)),r),Or=r=>r.endsWith("/")?r.slice(0,-1):r,vr=(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("&"),we=class be{constructor({host:e,port:t,protocol:n="",pathPrefix:s=""}){K(this,"protocol"),K(this,"host"),K(this,"port"),K(this,"path"),this.protocol=n,this.host=e,this.port=t,this.path=at(s)}replace(e){return new be({host:e.host??this.host,port:e.port??this.port,protocol:e.protocol??this.protocol,pathPrefix:e.pathPrefix??this.path})}child(e){return new be({...this,pathPrefix:Tr(this.path,e)})}toString(){return Or(`${this.protocol}://${this.host}:${this.port}/${this.path}`)}};K(we,"UNKNOWN",new we({host:"unknown",port:0}));let Sr=we;var Ir=Object.defineProperty,Nr=(r,e,t)=>e in r?Ir(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,se=(r,e,t)=>Nr(r,typeof e!="symbol"?e+"":e,t);const F=class extends Number{};se(F,"Absolute",255),se(F,"Default",1),se(F,"z",i.z.union([i.z.instanceof(F),i.z.number().int().min(0).max(255).transform(r=>new F(r)),i.z.instanceof(Number).transform(r=>new F(r))]));i.z.object({name:i.z.string(),key:i.z.string()});const ot=class X extends Error{constructor(){super(X.MESSAGE)}matches(e){return typeof e=="string"?e.includes(X.MESSAGE):e instanceof X||e.message.includes(X.MESSAGE)}};se(ot,"MESSAGE","canceled");let Er=ot;new Er;i.z.string().regex(/^\d+\.\d+\.\d+$/);const ue=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 _ extends Error{constructor(t){super(t);p(this,"discriminator","FreighterError");p(this,"type","")}}const Ar=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},je="unknown",Fe="nil",xr="freighter",Se=i.z.object({type:i.z.string(),data:i.z.string()});class zr{constructor(){p(this,"providers",[])}register(e){this.providers.push(e)}encode(e){if(e==null)return{type:Fe,data:""};if(Ar(e))for(const t of this.providers){const n=t.encode(e);if(n!=null)return n}return{type:je,data:JSON.stringify(e)}}decode(e){if(e==null||e.type===Fe)return null;if(e.type===je)return new qe(e.data);for(const t of this.providers){const n=t.decode(e);if(n!=null)return n}return new qe(e.data)}}const Ie=new zr,ut=({encode:r,decode:e})=>Ie.register({encode:r,decode:e}),Mr=r=>Ie.encode(r),Ne=r=>Ie.decode(r);class qe extends _{constructor(t){super(t);p(this,"type","unknown")}}const ce="freighter.",q=class q extends _{constructor(){super("EOF");p(this,"type",q.TYPE)}};p(q,"TYPE",ce+"eof"),p(q,"matches",ue(q.TYPE));let D=q;const G=class G extends _{constructor(){super("StreamClosed");p(this,"type",G.TYPE)}};p(G,"TYPE",ce+"stream_closed"),p(G,"matches",ue(G.TYPE));let P=G;const W=class W extends _{constructor(t={}){const{message:n="Unreachable",url:s=Sr.UNKNOWN}=t;super(n);p(this,"type",W.TYPE);p(this,"url");this.url=s}};p(W,"TYPE",ce+"unreachable"),p(W,"matches",ue(W.TYPE));let Y=W;const Br=r=>{if(!r.type.startsWith(xr))return null;if(D.matches(r))return{type:D.TYPE,data:"EOF"};if(P.matches(r))return{type:P.TYPE,data:"StreamClosed"};if(Y.matches(r))return{type:Y.TYPE,data:"Unreachable"};throw new Error(`Unknown error type: ${r.type}: ${r.message}`)},Rr=r=>{if(!r.type.startsWith(ce))return null;switch(r.type){case D.TYPE:return new D;case P.TYPE:return new P;case Y.TYPE:return new Y;default:throw new Error(`Unknown error type: ${r.data}`)}};ut({encode:Br,decode:Rr});class ct{constructor(){p(this,"middleware",[])}use(...e){this.middleware.push(...e)}async executeMiddleware(e,t){let n=0;const s=async a=>{if(n===this.middleware.length)return await t(a);const c=this.middleware[n];return n++,await c(a,s)};return await s(e)}}const lt="Content-Type",Ge=r=>{if(it.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(s,a)=>await e(s,{...a,agent:n})};class $r extends ct{constructor(t,n,s=!1){super();p(this,"endpoint");p(this,"encoder");p(this,"fetch");return this.endpoint=t.replace({protocol:s?"https":"http"}),this.encoder=n,this.fetch=Ge(this.endpoint.protocol),new Proxy(this,{get:(a,c,d)=>c==="endpoint"?this.endpoint:Reflect.get(a,c,d)})}get headers(){return{[lt]:this.encoder.contentType}}async send(t,n,s,a){n=s==null?void 0:s.parse(n);let c=null;const d=this.endpoint.child(t),f={};f.method="POST",f.body=this.encoder.encode(n??{});const[,y]=await this.executeMiddleware({target:d.toString(),protocol:this.endpoint.protocol,params:{},role:"client"},async T=>{const l={...T,params:{}};f.headers={...this.headers,...T.params};let E;try{E=await Ge(T.protocol)(T.target,f)}catch($){let x=$;return x.message==="Load failed"&&(x=new Y({url:d})),[l,x]}const R=await E.arrayBuffer();if(E!=null&&E.ok)return a!=null&&(c=this.encoder.decode(R,a)),[l,null];try{if(E.status!==400)return[l,new Error(E.statusText)];const $=this.encoder.decode(R,Se),x=Ne($);return[l,x]}catch($){return[l,new Error(`[freighter] - failed to decode error: ${E.statusText}: ${$.message}`)]}});return[c,y]}}const Ur=async(r,e,t,n,s)=>{const[a,c]=await r.send(e,t,n,s);if(c!=null)throw c;return a},Cr=()=>it.RUNTIME!=="node"?r=>new WebSocket(r):r=>new(require("ws")).WebSocket(r,{rejectUnauthorized:!1}),Dr=i.z.object({type:i.z.union([i.z.literal("data"),i.z.literal("close")]),payload:i.z.unknown().optional(),error:i.z.optional(Se)});class Pr{constructor(e,t,n,s){p(this,"encoder");p(this,"reqSchema");p(this,"resSchema");p(this,"ws");p(this,"serverClosed");p(this,"sendClosed");p(this,"receiveDataQueue",[]);p(this,"receiveCallbacksQueue",[]);this.encoder=t,this.reqSchema=n,this.resSchema=s,this.ws=e,this.sendClosed=!1,this.serverClosed=null,this.listenForMessages()}send(e){if(this.serverClosed!=null)return new D;if(this.sendClosed)throw new P;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=Ne(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(){const e=this.receiveDataQueue.shift();return e??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,Dr)),this.ws.onclose=e=>this.addMessage({type:"close",error:{type:Fr(e)?D.TYPE:P.TYPE,data:""}})}}const Lr="freighterctx",Yr=1e3,kr=1001,jr=[Yr,kr],Fr=r=>jr.includes(r.code),ae=class ae extends ct{constructor(t,n,s=!1){super();p(this,"baseUrl");p(this,"encoder");this.baseUrl=t.replace({protocol:s?"wss":"ws"}),this.encoder=n}async stream(t,n,s){const a=Cr();let c;const[,d]=await this.executeMiddleware({target:t,protocol:"websocket",params:{},role:"client"},async f=>{const y=a(this.buildURL(t,f)),T={...f,params:{}};y.binaryType=ae.MESSAGE_TYPE;const l=await this.wrapSocket(y,n,s);return l instanceof Error?[T,l]:(c=l,[T,null])});if(d!=null)throw d;return c}buildURL(t,n){const s=vr({[lt]:this.encoder.contentType,...n.params},Lr);return this.baseUrl.child(t).toString()+s}async wrapSocket(t,n,s){return await new Promise(a=>{t.onopen=()=>{a(new Pr(t,this.encoder,n,s))},t.onerror=c=>{const d=c;a(new Error(d.message))}})}};p(ae,"MESSAGE_TYPE","arraybuffer");let Te=ae;exports.BaseTypedError=_;exports.EOF=D;exports.HTTPClient=$r;exports.StreamClosed=P;exports.Unreachable=Y;exports.WebSocketClient=Te;exports.decodeError=Ne;exports.encodeError=Mr;exports.errorMatcher=ue;exports.errorZ=Se;exports.registerError=ut;exports.sendRequired=Ur;
|
|
13
|
+
`).slice(0,-1).map(t=>e.parse(te.decodeString(t)))}get timeRange(){if(this._timeRange==null)throw new Error("time range not set on series");return this._timeRange}get byteCapacity(){return new ye(this.underlyingData.byteLength)}get capacity(){return this.dataType.isVariable?this.byteCapacity.valueOf():this.dataType.density.length(this.byteCapacity)}get byteLength(){return this.writePos===L?this.byteCapacity:this.dataType.isVariable?new ye(this.writePos):this.dataType.density.size(this.writePos)}get length(){return this._cachedLength!=null?this._cachedLength:this.dataType.isVariable?this.calculateCachedLength():this.writePos===L?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,s)=>{n===me&&(e++,t.push(s+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 s=0;s<this.length;s++)n[s]=ar(this.dataType,e,this.data[s],t);return new $({data:n.buffer,dataType:e,timeRange:this._timeRange,sampleOffset:t,glBufferUsage:this.gl.bufferUsage,alignment:this.alignment})}calcRawMax(){if(this.length===0)return-1/0;if(this.dataType.equals(b.TIMESTAMP))this._cachedMax=this.data[this.data.length-1];else if(this.dataType.usesBigInt){const e=this.data;this._cachedMax=e.reduce((t,n)=>t>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()),H(this._cachedMax,this.sampleOffset))}calcRawMin(){if(this.length===0)return 1/0;if(this.dataType.equals(b.TIMESTAMP))this._cachedMin=this.data[0];else if(this.dataType.usesBigInt){const e=this.data;this._cachedMin=e.reduce((t,n)=>t<n?t:n)}else{const e=this.data;this._cachedMin=e.reduce((t,n)=>t<n?t:n)}return this._cachedMin}get min(){if(this.dataType.isVariable)throw new Error("cannot calculate minimum on a variable length data type");return this.writePos===0?1/0:(this._cachedMin??(this._cachedMin=this.calcRawMin()),H(this._cachedMin,this.sampleOffset))}get bounds(){return k(Number(this.min),Number(this.max))}maybeRecomputeMinMax(e){if(this._cachedMin!=null){const t=e._cachedMin??e.calcRawMin();t<this._cachedMin&&(this._cachedMin=t)}if(this._cachedMax!=null){const t=e._cachedMax??e.calcRawMax();t>this._cachedMax&&(this._cachedMax=t)}}enrich(){this.max,this.min}get range(){return H(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 H(n,this.sampleOffset)}atVariable(e,t){let n=0,s=0;if(this._cachedIndexes!=null)n=this._cachedIndexes[e],s=this._cachedIndexes[e+1]-1;else{e<0&&(e=this.length+e);for(let c=0;c<this.data.length;c++)if(this.data[c]===me){if(e===0){s=c;break}n=c+1,e--}if(s===0&&(s=this.data.length),n>=s||e>0){if(t)throw new Error(`[series] - no value at index ${e}`);return}}const a=this.data.slice(n,s);return this.dataType.equals(b.STRING)?new TextDecoder().decode(a):Ve(JSON.parse(new TextDecoder().decode(a)))}binarySearch(e){let t=0,n=this.length-1;const s=Kt(e);for(;t<=n;){const a=Math.floor((t+n)/2),c=s(this.at(a,!0),e);if(c===0)return a;c<0?t=a+1:n=a-1}return t}updateGLBuffer(e){if(this.gl.control=e,!this.dataType.equals(b.FLOAT32))throw new Error("Only FLOAT32 arrays can be used in WebGL");const{buffer:t,bufferUsage:n,prevBuffer:s}=this.gl;if(t==null&&(this.gl.buffer=e.createBuffer()),this.writePos!==s)if(e.bindBuffer(e.ARRAY_BUFFER,this.gl.buffer),this.writePos!==L){s===0&&e.bufferData(e.ARRAY_BUFFER,this.byteCapacity.valueOf(),e.STATIC_DRAW);const a=this.dataType.density.size(s).valueOf(),c=this.underlyingData.slice(this.gl.prevBuffer,this.writePos);e.bufferSubData(e.ARRAY_BUFFER,a,c.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=L}as(e){if(e==="string"){if(!this.dataType.equals(b.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(b.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 hr(this);return this.dataType.equals(b.JSON)?new dr(e):e}return new fr(this)}slice(e,t){return this.sliceSub(!1,e,t)}sub(e,t){return this.sliceSub(!0,e,t)}subIterator(e,t){return new De(this,e,t??this.length)}subAlignmentIterator(e,t){return new De(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 $({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 s;return e?s=this.data.subarray(t,n):s=this.data.slice(t,n),new $({data:s,dataType:this.dataType,timeRange:this._timeRange,sampleOffset:this.sampleOffset,glBufferUsage:this.gl.bufferUsage,alignment:this.alignment+BigInt(t)})}reAlign(e){return new $({data:this.buffer,dataType:this.dataType,timeRange:ve.ZERO,sampleOffset:this.sampleOffset,glBufferUsage:"static",alignment:e})}};u(J,"crudeZ",i.z.object({timeRange:ve.z.optional(),dataType:b.z,alignment:_t.optional(),data:i.z.union([ur,cr,i.z.instanceof(ArrayBuffer)]),glBufferUsage:ir.optional().default("static").optional()})),u(J,"z",J.crudeZ.transform(r=>new J(r)));let lr=J;class De{constructor(e,t,n){u(this,"series"),u(this,"end"),u(this,"index"),this.series=e;const s=k(0,e.length);this.end=Me(s,n),this.index=Me(s,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 hr{constructor(e){if(u(this,"series"),u(this,"index"),u(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<t.length&&t[this.index]!==me;)this.index++;const n=this.index;return e===n?{done:!0,value:void 0}:(this.index++,{done:!1,value:this.decoder.decode(this.series.buffer.slice(e,n))})}[Symbol.iterator](){return this}}var Pe,Le;class dr{constructor(e){u(this,"wrapped"),u(this,Pe,"JSONSeriesIterator"),this.wrapped=e}next(){const e=this.wrapped.next();return e.done===!0?{done:!0,value:void 0}:{done:!1,value:te.decodeString(e.value)}}[(Le=Symbol.iterator,Pe=Symbol.toStringTag,Le)](){return this}}var Ye,ke;class fr{constructor(e){u(this,"series"),u(this,"index"),u(this,Ye,"SeriesIterator"),this.series=e,this.index=0}next(){return this.index>=this.series.length?{done:!0,value:void 0}:{done:!1,value:this.series.at(this.index++,!0)}}[(ke=Symbol.iterator,Ye=Symbol.toStringTag,ke)](){return this}}const H=(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);i.z.object({key:i.z.string(),value:i.z.string()});i.z.record(i.z.union([i.z.number(),i.z.string(),i.z.symbol()]),i.z.unknown());const nt=()=>typeof process<"u"&&process.versions!=null&&process.versions.node!=null?"node":typeof window>"u"||window.document===void 0?"webworker":"browser",gr=nt(),st=["MacOS","Windows","Linux","Docker"],pr=i.z.enum(st);let fe;const yr=()=>{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"},mr=(r={})=>{const{force:e,default:t}=r;return e??fe??(fe=yr(),fe??t)},it=Object.freeze(Object.defineProperty({__proto__:null,OPERATING_SYSTEMS:st,RUNTIME:gr,detect:nt,getOS:mr,osZ:pr},Symbol.toStringTag,{value:"Module"}));var wr=Object.defineProperty,br=(r,e,t)=>e in r?wr(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,K=(r,e,t)=>br(r,typeof e!="symbol"?e+"":e,t);const Tr=(...r)=>r.map(at).join(""),at=r=>(r.endsWith("/")||(r+="/"),r.startsWith("/")&&(r=r.slice(1)),r),Or=r=>r.endsWith("/")?r.slice(0,-1):r,vr=(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("&")}`,we=class be{constructor({host:e,port:t,protocol:n="",pathPrefix:s=""}){K(this,"protocol"),K(this,"host"),K(this,"port"),K(this,"path"),this.protocol=n,this.host=e,this.port=t,this.path=at(s)}replace(e){return new be({host:e.host??this.host,port:e.port??this.port,protocol:e.protocol??this.protocol,pathPrefix:e.pathPrefix??this.path})}child(e){return new be({...this,pathPrefix:Tr(this.path,e)})}toString(){return Or(`${this.protocol}://${this.host}:${this.port}/${this.path}`)}};K(we,"UNKNOWN",new we({host:"unknown",port:0}));let Sr=we;var Ir=Object.defineProperty,Nr=(r,e,t)=>e in r?Ir(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,se=(r,e,t)=>Nr(r,typeof e!="symbol"?e+"":e,t);const F=class extends Number{};se(F,"Absolute",255),se(F,"Default",1),se(F,"z",i.z.union([i.z.instanceof(F),i.z.number().int().min(0).max(255).transform(r=>new F(r)),i.z.instanceof(Number).transform(r=>new F(r))]));i.z.object({name:i.z.string(),key:i.z.string()});const ot=class X extends Error{constructor(){super(X.MESSAGE)}matches(e){return typeof e=="string"?e.includes(X.MESSAGE):e instanceof X||e.message.includes(X.MESSAGE)}};se(ot,"MESSAGE","canceled");let Er=ot;new Er;i.z.string().regex(/^\d+\.\d+\.\d+$/);const ue=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 _ extends Error{constructor(){super(...arguments);p(this,"discriminator","FreighterError");p(this,"type","")}}const Ar=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},je="unknown",Fe="nil",xr="freighter",Se=i.z.object({type:i.z.string(),data:i.z.string()});class zr{constructor(){p(this,"providers",[])}register(e){this.providers.push(e)}encode(e){if(e==null)return{type:Fe,data:""};if(Ar(e))for(const t of this.providers){const n=t.encode(e);if(n!=null)return n}return{type:je,data:JSON.stringify(e)}}decode(e){if(e==null||e.type===Fe)return null;if(e.type===je)return new qe(e.data);for(const t of this.providers){const n=t.decode(e);if(n!=null)return n}return new qe(e.data)}}const Ie=new zr,ut=({encode:r,decode:e})=>Ie.register({encode:r,decode:e}),Mr=r=>Ie.encode(r),Ne=r=>Ie.decode(r);class qe extends _{constructor(){super(...arguments);p(this,"type","unknown")}}const ce="freighter.",q=class q extends _{constructor(){super("EOF");p(this,"type",q.TYPE)}};p(q,"TYPE",`${ce}eof`),p(q,"matches",ue(q.TYPE));let D=q;const G=class G extends _{constructor(){super("StreamClosed");p(this,"type",G.TYPE)}};p(G,"TYPE",`${ce}stream_closed`),p(G,"matches",ue(G.TYPE));let P=G;const W=class W extends _{constructor(t={}){const{message:n="Unreachable",url:s=Sr.UNKNOWN}=t;super(n);p(this,"type",W.TYPE);p(this,"url");this.url=s}};p(W,"TYPE",`${ce}unreachable`),p(W,"matches",ue(W.TYPE));let Y=W;const $r=r=>{if(!r.type.startsWith(xr))return null;if(D.matches(r))return{type:D.TYPE,data:"EOF"};if(P.matches(r))return{type:P.TYPE,data:"StreamClosed"};if(Y.matches(r))return{type:Y.TYPE,data:"Unreachable"};throw new Error(`Unknown error type: ${r.type}: ${r.message}`)},Br=r=>{if(!r.type.startsWith(ce))return null;switch(r.type){case D.TYPE:return new D;case P.TYPE:return new P;case Y.TYPE:return new Y;default:throw new Error(`Unknown error type: ${r.data}`)}};ut({encode:$r,decode:Br});class ct{constructor(){p(this,"middleware",[])}use(...e){this.middleware.push(...e)}async executeMiddleware(e,t){let n=0;const s=async a=>{if(n===this.middleware.length)return await t(a);const c=this.middleware[n];return n++,await c(a,s)};return await s(e)}}const lt="Content-Type",Ge=r=>{if(it.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(s,a)=>await e(s,{...a,agent:n})};class Rr extends ct{constructor(t,n,s=!1){super();p(this,"endpoint");p(this,"encoder");p(this,"fetch");return this.endpoint=t.replace({protocol:s?"https":"http"}),this.encoder=n,this.fetch=Ge(this.endpoint.protocol),new Proxy(this,{get:(a,c,d)=>c==="endpoint"?this.endpoint:Reflect.get(a,c,d)})}get headers(){return{[lt]:this.encoder.contentType}}async send(t,n,s,a){n=s==null?void 0:s.parse(n);let c=null;const d=this.endpoint.child(t),f={};f.method="POST",f.body=this.encoder.encode(n??{});const[,y]=await this.executeMiddleware({target:d.toString(),protocol:this.endpoint.protocol,params:{},role:"client"},async T=>{const l={...T,params:{}};f.headers={...this.headers,...T.params};let E;try{E=await Ge(T.protocol)(T.target,f)}catch(R){let x=R;return x.message==="Load failed"&&(x=new Y({url:d})),[l,x]}const B=await E.arrayBuffer();if(E!=null&&E.ok)return a!=null&&(c=this.encoder.decode(B,a)),[l,null];try{if(E.status!==400)return[l,new Error(E.statusText)];const R=this.encoder.decode(B,Se),x=Ne(R);return[l,x]}catch(R){return[l,new Error(`[freighter] - failed to decode error: ${E.statusText}: ${R.message}`)]}});return[c,y]}}const Ur=async(r,e,t,n,s)=>{const[a,c]=await r.send(e,t,n,s);if(c!=null)throw c;return a},Cr=()=>it.RUNTIME!=="node"?r=>new WebSocket(r):r=>new(require("ws")).WebSocket(r,{rejectUnauthorized:!1}),Dr=i.z.object({type:i.z.union([i.z.literal("data"),i.z.literal("close")]),payload:i.z.unknown().optional(),error:i.z.optional(Se)});class Pr{constructor(e,t,n,s){p(this,"encoder");p(this,"reqSchema");p(this,"resSchema");p(this,"ws");p(this,"serverClosed");p(this,"sendClosed");p(this,"receiveDataQueue",[]);p(this,"receiveCallbacksQueue",[]);this.encoder=t,this.reqSchema=n,this.resSchema=s,this.ws=e,this.sendClosed=!1,this.serverClosed=null,this.listenForMessages()}send(e){if(this.serverClosed!=null)return new D;if(this.sendClosed)throw new P;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=Ne(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(){const e=this.receiveDataQueue.shift();return e??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,Dr)),this.ws.onclose=e=>this.addMessage({type:"close",error:{type:Fr(e)?D.TYPE:P.TYPE,data:""}})}}const Lr="freighterctx",Yr=1e3,kr=1001,jr=[Yr,kr],Fr=r=>jr.includes(r.code),ae=class ae extends ct{constructor(t,n,s=!1){super();p(this,"baseUrl");p(this,"encoder");this.baseUrl=t.replace({protocol:s?"wss":"ws"}),this.encoder=n}async stream(t,n,s){const a=Cr();let c;const[,d]=await this.executeMiddleware({target:t,protocol:"websocket",params:{},role:"client"},async f=>{const y=a(this.buildURL(t,f)),T={...f,params:{}};y.binaryType=ae.MESSAGE_TYPE;const l=await this.wrapSocket(y,n,s);return l instanceof Error?[T,l]:(c=l,[T,null])});if(d!=null)throw d;return c}buildURL(t,n){const s=vr({[lt]:this.encoder.contentType,...n.params},Lr);return this.baseUrl.child(t).toString()+s}async wrapSocket(t,n,s){return await new Promise(a=>{t.onopen=()=>{a(new Pr(t,this.encoder,n,s))},t.onerror=c=>{const d=c;a(new Error(d.message))}})}};p(ae,"MESSAGE_TYPE","arraybuffer");let Te=ae;exports.BaseTypedError=_;exports.EOF=D;exports.HTTPClient=Rr;exports.StreamClosed=P;exports.Unreachable=Y;exports.WebSocketClient=Te;exports.decodeError=Ne;exports.encodeError=Mr;exports.errorMatcher=ue;exports.errorZ=Se;exports.registerError=ut;exports.sendRequired=Ur;
|
package/dist/freighter.js
CHANGED
|
@@ -22,11 +22,15 @@ const ft = (r) => {
|
|
|
22
22
|
}), s;
|
|
23
23
|
};
|
|
24
24
|
return e;
|
|
25
|
-
}, We = qe(ft), dt = (r) =>
|
|
25
|
+
}, We = qe(ft), dt = (r) => (
|
|
26
|
+
// Don't convert the first character and don't convert a character that is after a
|
|
27
|
+
// non-alphanumeric character
|
|
28
|
+
r.replace(/([a-z0-9])([A-Z])/g, (e, t, n) => `${t}_${n.toLowerCase()}`)
|
|
29
|
+
), gt = qe(dt), de = {
|
|
26
30
|
recursive: !0,
|
|
27
31
|
recursiveInArray: !0,
|
|
28
32
|
keepTypesOnRecursion: [Number, String, Uint8Array]
|
|
29
|
-
}, pt = (r = de) => (r.recursive == null ? r = de : r.recursiveInArray
|
|
33
|
+
}, pt = (r = de) => (r.recursive == null ? r = de : r.recursiveInArray ?? (r.recursiveInArray = !1), r), Se = (r) => r != null && Array.isArray(r), ce = (r) => r != null && typeof r == "object" && !Array.isArray(r), Ie = (r, e) => (e || []).some((t) => r instanceof t), Ve = (r) => r != null && typeof r == "object" && !Array.isArray(r);
|
|
30
34
|
var yt = Object.defineProperty, mt = (r, e, t) => e in r ? yt(r, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : r[e] = t, Q = (r, e, t) => mt(r, typeof e != "symbol" ? e + "" : e, t);
|
|
31
35
|
let wt = class {
|
|
32
36
|
constructor() {
|
|
@@ -121,10 +125,10 @@ const se = i.object({ x: i.number(), y: i.number() }), Nt = i.object({ clientX:
|
|
|
121
125
|
i.enum(Je);
|
|
122
126
|
const At = ["left", "right"], He = i.enum(At), xt = ["top", "bottom"], Ke = i.enum(xt), Xe = ["center"], Ne = i.enum(Xe), Mt = [...Je, ...Xe], Qe = i.enum(Mt);
|
|
123
127
|
i.enum(St);
|
|
124
|
-
const
|
|
125
|
-
i.enum(
|
|
126
|
-
const
|
|
127
|
-
i.union([
|
|
128
|
+
const $t = ["first", "last"];
|
|
129
|
+
i.enum($t);
|
|
130
|
+
const Bt = i.object({ lower: i.number(), upper: i.number() }), Rt = i.object({ lower: i.bigint(), upper: i.bigint() });
|
|
131
|
+
i.union([Bt, ae]);
|
|
128
132
|
i.union([Rt, ae]);
|
|
129
133
|
i.union([Ze, Qe]);
|
|
130
134
|
i.union([Ze, Qe, i.instanceof(String)]);
|
|
@@ -228,19 +232,41 @@ const Gt = (r) => (e, t, n, s) => t === "dimension" ? [e, n] : [
|
|
|
228
232
|
constructor() {
|
|
229
233
|
D(this, "ops", []), D(this, "currBounds", null), D(this, "currType", null), D(this, "reversed", !1), this.ops = [];
|
|
230
234
|
}
|
|
235
|
+
/**
|
|
236
|
+
* @returns a new scale with a translation as its first operation. Any number provided
|
|
237
|
+
* to the {@link pos} operation on the scale will be translated by the specified value.
|
|
238
|
+
* @param value - The amount to translate by.
|
|
239
|
+
*/
|
|
231
240
|
static translate(e) {
|
|
232
241
|
return new z().translate(e);
|
|
233
242
|
}
|
|
243
|
+
/**
|
|
244
|
+
* @returns a new scale with a magnification as its first operation. Any number provided
|
|
245
|
+
* to the {@link pos} or {@link dim} operation will be multiplied by the specified value.
|
|
246
|
+
* @param value - The amount to translate by.
|
|
247
|
+
*/
|
|
234
248
|
static magnify(e) {
|
|
235
249
|
return new z().magnify(e);
|
|
236
250
|
}
|
|
237
251
|
static scale(e, t) {
|
|
238
252
|
return new z().scale(e, t);
|
|
239
253
|
}
|
|
254
|
+
/**
|
|
255
|
+
* @returns a copy of the scale with a translation as its next operation. Any
|
|
256
|
+
* number provided to the {@link pos} method on the scale will be translated by the
|
|
257
|
+
* specified value.
|
|
258
|
+
* @param value - The amount to translate by.
|
|
259
|
+
*/
|
|
240
260
|
translate(e) {
|
|
241
261
|
const t = this.new(), n = Gt(e);
|
|
242
262
|
return n.type = "translate", t.ops.push(n), t;
|
|
243
263
|
}
|
|
264
|
+
/**
|
|
265
|
+
* @returns a copy of the scale with a translation as its next operation. Any number
|
|
266
|
+
* provided to the {@link pos} or {@link dim} method on the scale will be multiplied
|
|
267
|
+
* by the specified value.
|
|
268
|
+
* @param value - The amount to magnify by.
|
|
269
|
+
*/
|
|
244
270
|
magnify(e) {
|
|
245
271
|
const t = this.new(), n = qt(e);
|
|
246
272
|
return n.type = "magnify", t.ops.push(n), t;
|
|
@@ -295,9 +321,9 @@ const Gt = (r) => (e, t, n, s) => t === "dimension" ? [e, n] : [
|
|
|
295
321
|
}
|
|
296
322
|
};
|
|
297
323
|
D(ge, "IDENTITY", new ge());
|
|
298
|
-
let
|
|
299
|
-
const
|
|
300
|
-
constructor(e = new
|
|
324
|
+
let $e = ge;
|
|
325
|
+
const Be = class C {
|
|
326
|
+
constructor(e = new $e(), t = new $e(), n = null) {
|
|
301
327
|
D(this, "x"), D(this, "y"), D(this, "currRoot"), this.x = e, this.y = t, this.currRoot = n;
|
|
302
328
|
}
|
|
303
329
|
static translate(e, t) {
|
|
@@ -374,7 +400,7 @@ const $e = class C {
|
|
|
374
400
|
);
|
|
375
401
|
}
|
|
376
402
|
};
|
|
377
|
-
D(
|
|
403
|
+
D(Be, "IDENTITY", new Be());
|
|
378
404
|
const Jt = (r) => r != null && typeof r == "object" && "toString" in r, Ht = (r, e = !1) => {
|
|
379
405
|
const t = Jt(r) ? "stringer" : typeof r;
|
|
380
406
|
let n;
|
|
@@ -454,7 +480,7 @@ const rr = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz", nr
|
|
|
454
480
|
const [n, s, a] = e.split(":");
|
|
455
481
|
let c = "00", f = "00";
|
|
456
482
|
a != null && ([c, f] = a.split("."));
|
|
457
|
-
let d = h.hours(parseInt(n ?? "00"
|
|
483
|
+
let d = h.hours(parseInt(n ?? "00")).add(h.minutes(parseInt(s ?? "00"))).add(h.seconds(parseInt(c ?? "00"))).add(h.milliseconds(parseInt(f ?? "00")));
|
|
458
484
|
return t === "local" && (d = d.add(h.utcOffset)), d.valueOf();
|
|
459
485
|
}
|
|
460
486
|
static parseDateTimeString(e, t = "UTC") {
|
|
@@ -1120,25 +1146,24 @@ u(M, "z", i.union([
|
|
|
1120
1146
|
i.instanceof(M)
|
|
1121
1147
|
]));
|
|
1122
1148
|
let Te = M;
|
|
1123
|
-
const o = class
|
|
1149
|
+
const o = class $ extends String {
|
|
1124
1150
|
constructor(e) {
|
|
1125
|
-
if (e instanceof
|
|
1151
|
+
if (e instanceof $ || typeof e == "string" || typeof e.valueOf() == "string") {
|
|
1126
1152
|
super(e.valueOf());
|
|
1127
1153
|
return;
|
|
1128
|
-
} else {
|
|
1129
|
-
const t = B.ARRAY_CONSTRUCTOR_DATA_TYPES.get(e.constructor.name);
|
|
1130
|
-
if (t != null) {
|
|
1131
|
-
super(t.valueOf());
|
|
1132
|
-
return;
|
|
1133
|
-
}
|
|
1134
1154
|
}
|
|
1135
|
-
|
|
1155
|
+
const t = $.ARRAY_CONSTRUCTOR_DATA_TYPES.get(e.constructor.name);
|
|
1156
|
+
if (t != null) {
|
|
1157
|
+
super(t.valueOf());
|
|
1158
|
+
return;
|
|
1159
|
+
}
|
|
1160
|
+
throw super($.UNKNOWN.valueOf()), new Error(`unable to find data type for ${e.toString()}`);
|
|
1136
1161
|
}
|
|
1137
1162
|
/**
|
|
1138
1163
|
* @returns the TypedArray constructor for the DataType.
|
|
1139
1164
|
*/
|
|
1140
1165
|
get Array() {
|
|
1141
|
-
const e =
|
|
1166
|
+
const e = $.ARRAY_CONSTRUCTORS.get(this.toString());
|
|
1142
1167
|
if (e == null)
|
|
1143
1168
|
throw new Error(`unable to find array constructor for ${this.valueOf()}`);
|
|
1144
1169
|
return e;
|
|
@@ -1160,10 +1185,10 @@ const o = class B extends String {
|
|
|
1160
1185
|
return this.valueOf();
|
|
1161
1186
|
}
|
|
1162
1187
|
get isVariable() {
|
|
1163
|
-
return this.equals(
|
|
1188
|
+
return this.equals($.JSON) || this.equals($.STRING);
|
|
1164
1189
|
}
|
|
1165
1190
|
get isNumeric() {
|
|
1166
|
-
return !this.isVariable && !this.equals(
|
|
1191
|
+
return !this.isVariable && !this.equals($.UUID);
|
|
1167
1192
|
}
|
|
1168
1193
|
get isInteger() {
|
|
1169
1194
|
return this.toString().startsWith("int");
|
|
@@ -1172,7 +1197,7 @@ const o = class B extends String {
|
|
|
1172
1197
|
return this.toString().startsWith("float");
|
|
1173
1198
|
}
|
|
1174
1199
|
get density() {
|
|
1175
|
-
const e =
|
|
1200
|
+
const e = $.DENSITIES.get(this.toString());
|
|
1176
1201
|
if (e == null) throw new Error(`unable to find density for ${this.valueOf()}`);
|
|
1177
1202
|
return e;
|
|
1178
1203
|
}
|
|
@@ -1197,7 +1222,7 @@ const o = class B extends String {
|
|
|
1197
1222
|
return this.toString();
|
|
1198
1223
|
}
|
|
1199
1224
|
get usesBigInt() {
|
|
1200
|
-
return
|
|
1225
|
+
return $.BIG_INT_TYPES.some((e) => e.equals(this));
|
|
1201
1226
|
}
|
|
1202
1227
|
};
|
|
1203
1228
|
u(o, "UNKNOWN", new o("unknown")), /** Represents a 64-bit floating point value. */
|
|
@@ -1401,7 +1426,7 @@ const et = (r) => {
|
|
|
1401
1426
|
(r) => new Uint8Array(
|
|
1402
1427
|
atob(r).split("").map((e) => e.charCodeAt(0))
|
|
1403
1428
|
).buffer
|
|
1404
|
-
), ur = i.union([i.null(), i.undefined()]).transform(() => new Uint8Array().buffer), ye = 10, J = class
|
|
1429
|
+
), ur = i.union([i.null(), i.undefined()]).transform(() => new Uint8Array().buffer), ye = 10, J = class B {
|
|
1405
1430
|
constructor(e) {
|
|
1406
1431
|
u(this, "key", ""), u(this, "isSynnaxSeries", !0), u(this, "dataType"), u(this, "sampleOffset"), u(this, "gl"), u(this, "_data"), u(this, "_timeRange"), u(this, "alignment", 0n), u(this, "_cachedMin"), u(this, "_cachedMax"), u(this, "writePos", P), u(this, "_refCount", 0), u(this, "_cachedLength"), u(this, "_cachedIndexes"), ar(e) && (e = { data: e });
|
|
1407
1432
|
const {
|
|
@@ -1412,7 +1437,7 @@ const et = (r) => {
|
|
|
1412
1437
|
alignment: c = 0n,
|
|
1413
1438
|
key: f = nr()
|
|
1414
1439
|
} = e, d = e.data ?? [];
|
|
1415
|
-
if (d instanceof
|
|
1440
|
+
if (d instanceof B || typeof d == "object" && "isSynnaxSeries" in d && d.isSynnaxSeries === !0) {
|
|
1416
1441
|
const l = d;
|
|
1417
1442
|
this.key = l.key, this.dataType = l.dataType, this.sampleOffset = l.sampleOffset, this.gl = l.gl, this._data = l._data, this._timeRange = l._timeRange, this.alignment = l.alignment, this._cachedMin = l._cachedMin, this._cachedMax = l._cachedMax, this.writePos = l.writePos, this._refCount = l._refCount, this._cachedLength = l._cachedLength;
|
|
1418
1443
|
return;
|
|
@@ -1450,11 +1475,11 @@ const et = (r) => {
|
|
|
1450
1475
|
else {
|
|
1451
1476
|
let l = y ? [d] : d;
|
|
1452
1477
|
const E = l[0];
|
|
1453
|
-
(E instanceof O || E instanceof Date || E instanceof S) && (l = l.map((R) => new O(R).valueOf())), this.dataType.equals(b.STRING) ? (this._cachedLength = l.length, this._data = new TextEncoder().encode(l.join(`
|
|
1454
|
-
`)
|
|
1478
|
+
(E instanceof O || E instanceof Date || E instanceof S) && (l = l.map((R) => new O(R).valueOf())), this.dataType.equals(b.STRING) ? (this._cachedLength = l.length, this._data = new TextEncoder().encode(`${l.join(`
|
|
1479
|
+
`)}
|
|
1455
1480
|
`)) : this.dataType.equals(b.JSON) ? (this._cachedLength = l.length, this._data = new TextEncoder().encode(
|
|
1456
|
-
l.map((R) => ee.encodeString(R)).join(`
|
|
1457
|
-
`)
|
|
1481
|
+
`${l.map((R) => ee.encodeString(R)).join(`
|
|
1482
|
+
`)}
|
|
1458
1483
|
`
|
|
1459
1484
|
)) : this._data = new this.dataType.Array(l).buffer;
|
|
1460
1485
|
}
|
|
@@ -1468,7 +1493,7 @@ const et = (r) => {
|
|
|
1468
1493
|
static alloc({ capacity: e, dataType: t, ...n }) {
|
|
1469
1494
|
if (e === 0)
|
|
1470
1495
|
throw new Error("[Series] - cannot allocate an array of length 0");
|
|
1471
|
-
const s = new new b(t).Array(e), a = new
|
|
1496
|
+
const s = new new b(t).Array(e), a = new B({
|
|
1472
1497
|
data: s.buffer,
|
|
1473
1498
|
dataType: t,
|
|
1474
1499
|
...n
|
|
@@ -1479,24 +1504,24 @@ const et = (r) => {
|
|
|
1479
1504
|
const s = n.spanRange(t.span(e)), a = new BigInt64Array(e);
|
|
1480
1505
|
for (let c = 0; c < e; c++)
|
|
1481
1506
|
a[c] = BigInt(n.add(t.span(c)).valueOf());
|
|
1482
|
-
return new
|
|
1507
|
+
return new B({ data: a, dataType: b.TIMESTAMP, timeRange: s });
|
|
1483
1508
|
}
|
|
1484
1509
|
get refCount() {
|
|
1485
1510
|
return this._refCount;
|
|
1486
1511
|
}
|
|
1487
1512
|
static fromStrings(e, t) {
|
|
1488
|
-
const n = new TextEncoder().encode(e.join(`
|
|
1489
|
-
`)
|
|
1513
|
+
const n = new TextEncoder().encode(`${e.join(`
|
|
1514
|
+
`)}
|
|
1490
1515
|
`);
|
|
1491
|
-
return new
|
|
1516
|
+
return new B({ data: n, dataType: b.STRING, timeRange: t });
|
|
1492
1517
|
}
|
|
1493
1518
|
static fromJSON(e, t) {
|
|
1494
1519
|
const n = new TextEncoder().encode(
|
|
1495
|
-
e.map((s) => ee.encodeString(s)).join(`
|
|
1496
|
-
`)
|
|
1520
|
+
`${e.map((s) => ee.encodeString(s)).join(`
|
|
1521
|
+
`)}
|
|
1497
1522
|
`
|
|
1498
1523
|
);
|
|
1499
|
-
return new
|
|
1524
|
+
return new B({ data: n, dataType: b.JSON, timeRange: t });
|
|
1500
1525
|
}
|
|
1501
1526
|
acquire(e) {
|
|
1502
1527
|
this._refCount++, e != null && this.updateGLBuffer(e);
|
|
@@ -1613,7 +1638,7 @@ const et = (r) => {
|
|
|
1613
1638
|
const n = new e.Array(this.length);
|
|
1614
1639
|
for (let s = 0; s < this.length; s++)
|
|
1615
1640
|
n[s] = ir(this.dataType, e, this.data[s], t);
|
|
1616
|
-
return new
|
|
1641
|
+
return new B({
|
|
1617
1642
|
data: n.buffer,
|
|
1618
1643
|
dataType: e,
|
|
1619
1644
|
timeRange: this._timeRange,
|
|
@@ -1639,12 +1664,11 @@ const et = (r) => {
|
|
|
1639
1664
|
get max() {
|
|
1640
1665
|
if (this.dataType.isVariable)
|
|
1641
1666
|
throw new Error("cannot calculate maximum on a variable length data type");
|
|
1642
|
-
return this.writePos === 0 ? -1 / 0 : (this._cachedMax
|
|
1667
|
+
return this.writePos === 0 ? -1 / 0 : (this._cachedMax ?? (this._cachedMax = this.calcRawMax()), H(this._cachedMax, this.sampleOffset));
|
|
1643
1668
|
}
|
|
1644
1669
|
calcRawMin() {
|
|
1645
1670
|
if (this.length === 0) return 1 / 0;
|
|
1646
|
-
if (this.dataType.equals(b.TIMESTAMP))
|
|
1647
|
-
this._cachedMin = this.data[0];
|
|
1671
|
+
if (this.dataType.equals(b.TIMESTAMP)) this._cachedMin = this.data[0];
|
|
1648
1672
|
else if (this.dataType.usesBigInt) {
|
|
1649
1673
|
const e = this.data;
|
|
1650
1674
|
this._cachedMin = e.reduce((t, n) => t < n ? t : n);
|
|
@@ -1658,7 +1682,7 @@ const et = (r) => {
|
|
|
1658
1682
|
get min() {
|
|
1659
1683
|
if (this.dataType.isVariable)
|
|
1660
1684
|
throw new Error("cannot calculate minimum on a variable length data type");
|
|
1661
|
-
return this.writePos === 0 ? 1 / 0 : (this._cachedMin
|
|
1685
|
+
return this.writePos === 0 ? 1 / 0 : (this._cachedMin ?? (this._cachedMin = this.calcRawMin()), H(this._cachedMin, this.sampleOffset));
|
|
1662
1686
|
}
|
|
1663
1687
|
/** @returns the bounds of this array. */
|
|
1664
1688
|
get bounds() {
|
|
@@ -1833,7 +1857,7 @@ const et = (r) => {
|
|
|
1833
1857
|
subBytes(e, t) {
|
|
1834
1858
|
if (e >= 0 && (t == null || t >= this.byteLength.valueOf())) return this;
|
|
1835
1859
|
const n = this.data.subarray(e, t);
|
|
1836
|
-
return new
|
|
1860
|
+
return new B({
|
|
1837
1861
|
data: n,
|
|
1838
1862
|
dataType: this.dataType,
|
|
1839
1863
|
timeRange: this._timeRange,
|
|
@@ -1845,7 +1869,7 @@ const et = (r) => {
|
|
|
1845
1869
|
sliceSub(e, t, n) {
|
|
1846
1870
|
if (t <= 0 && (n == null || n >= this.length)) return this;
|
|
1847
1871
|
let s;
|
|
1848
|
-
return e ? s = this.data.subarray(t, n) : s = this.data.slice(t, n), new
|
|
1872
|
+
return e ? s = this.data.subarray(t, n) : s = this.data.slice(t, n), new B({
|
|
1849
1873
|
data: s,
|
|
1850
1874
|
dataType: this.dataType,
|
|
1851
1875
|
timeRange: this._timeRange,
|
|
@@ -1855,7 +1879,7 @@ const et = (r) => {
|
|
|
1855
1879
|
});
|
|
1856
1880
|
}
|
|
1857
1881
|
reAlign(e) {
|
|
1858
|
-
return new
|
|
1882
|
+
return new B({
|
|
1859
1883
|
data: this.buffer,
|
|
1860
1884
|
dataType: this.dataType,
|
|
1861
1885
|
timeRange: Te.ZERO,
|
|
@@ -1964,7 +1988,7 @@ const pr = () => {
|
|
|
1964
1988
|
osZ: gr
|
|
1965
1989
|
}, Symbol.toStringTag, { value: "Module" }));
|
|
1966
1990
|
var mr = Object.defineProperty, wr = (r, e, t) => e in r ? mr(r, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : r[e] = t, K = (r, e, t) => wr(r, typeof e != "symbol" ? e + "" : e, t);
|
|
1967
|
-
const br = (...r) => r.map(st).join(""), st = (r) => (r.endsWith("/") || (r += "/"), r.startsWith("/") && (r = r.slice(1)), r), Tr = (r) => r.endsWith("/") ? r.slice(0, -1) : r, Or = (r, e = "") => r === null ? "" :
|
|
1991
|
+
const br = (...r) => r.map(st).join(""), st = (r) => (r.endsWith("/") || (r += "/"), r.startsWith("/") && (r = r.slice(1)), r), Tr = (r) => r.endsWith("/") ? r.slice(0, -1) : r, Or = (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("&")}`, me = class we {
|
|
1968
1992
|
/**
|
|
1969
1993
|
* @param host - The hostname or IP address of the server.
|
|
1970
1994
|
* @param port - The port number of the server.
|
|
@@ -2034,8 +2058,8 @@ new Nr();
|
|
|
2034
2058
|
i.string().regex(/^\d+\.\d+\.\d+$/);
|
|
2035
2059
|
const Oe = (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);
|
|
2036
2060
|
class oe extends Error {
|
|
2037
|
-
constructor(
|
|
2038
|
-
super(
|
|
2061
|
+
constructor() {
|
|
2062
|
+
super(...arguments);
|
|
2039
2063
|
p(this, "discriminator", "FreighterError");
|
|
2040
2064
|
p(this, "type", "");
|
|
2041
2065
|
}
|
|
@@ -2081,8 +2105,8 @@ const ve = new xr(), Mr = ({
|
|
|
2081
2105
|
decode: e
|
|
2082
2106
|
}) => ve.register({ encode: r, decode: e }), Zr = (r) => ve.encode(r), ot = (r) => ve.decode(r);
|
|
2083
2107
|
class je extends oe {
|
|
2084
|
-
constructor(
|
|
2085
|
-
super(
|
|
2108
|
+
constructor() {
|
|
2109
|
+
super(...arguments);
|
|
2086
2110
|
p(this, "type", "unknown");
|
|
2087
2111
|
}
|
|
2088
2112
|
}
|
|
@@ -2092,7 +2116,7 @@ const ue = "freighter.", q = class q extends oe {
|
|
|
2092
2116
|
p(this, "type", q.TYPE);
|
|
2093
2117
|
}
|
|
2094
2118
|
};
|
|
2095
|
-
p(q, "TYPE", ue
|
|
2119
|
+
p(q, "TYPE", `${ue}eof`), p(q, "matches", Oe(q.TYPE));
|
|
2096
2120
|
let L = q;
|
|
2097
2121
|
const W = class W extends oe {
|
|
2098
2122
|
constructor() {
|
|
@@ -2100,7 +2124,7 @@ const W = class W extends oe {
|
|
|
2100
2124
|
p(this, "type", W.TYPE);
|
|
2101
2125
|
}
|
|
2102
2126
|
};
|
|
2103
|
-
p(W, "TYPE", ue
|
|
2127
|
+
p(W, "TYPE", `${ue}stream_closed`), p(W, "matches", Oe(W.TYPE));
|
|
2104
2128
|
let Y = W;
|
|
2105
2129
|
const V = class V extends oe {
|
|
2106
2130
|
constructor(t = {}) {
|
|
@@ -2111,9 +2135,9 @@ const V = class V extends oe {
|
|
|
2111
2135
|
this.url = s;
|
|
2112
2136
|
}
|
|
2113
2137
|
};
|
|
2114
|
-
p(V, "TYPE", ue
|
|
2138
|
+
p(V, "TYPE", `${ue}unreachable`), p(V, "matches", Oe(V.TYPE));
|
|
2115
2139
|
let j = V;
|
|
2116
|
-
const
|
|
2140
|
+
const $r = (r) => {
|
|
2117
2141
|
if (!r.type.startsWith(Ar)) return null;
|
|
2118
2142
|
if (L.matches(r)) return { type: L.TYPE, data: "EOF" };
|
|
2119
2143
|
if (Y.matches(r))
|
|
@@ -2121,7 +2145,7 @@ const Br = (r) => {
|
|
|
2121
2145
|
if (j.matches(r))
|
|
2122
2146
|
return { type: j.TYPE, data: "Unreachable" };
|
|
2123
2147
|
throw new Error(`Unknown error type: ${r.type}: ${r.message}`);
|
|
2124
|
-
},
|
|
2148
|
+
}, Br = (r) => {
|
|
2125
2149
|
if (!r.type.startsWith(ue)) return null;
|
|
2126
2150
|
switch (r.type) {
|
|
2127
2151
|
case L.TYPE:
|
|
@@ -2135,8 +2159,8 @@ const Br = (r) => {
|
|
|
2135
2159
|
}
|
|
2136
2160
|
};
|
|
2137
2161
|
Mr({
|
|
2138
|
-
encode:
|
|
2139
|
-
decode:
|
|
2162
|
+
encode: $r,
|
|
2163
|
+
decode: Br
|
|
2140
2164
|
});
|
|
2141
2165
|
class ut {
|
|
2142
2166
|
constructor() {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@synnaxlabs/freighter",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.34.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "a modular transport abstraction",
|
|
6
6
|
"repository": "https://github.com/synnaxlabs/synnax/tree/main/freighter/ts",
|
|
@@ -17,18 +17,19 @@
|
|
|
17
17
|
"node-fetch": "^2.7.0",
|
|
18
18
|
"ws": "^8.18.0",
|
|
19
19
|
"zod": "^3.23.8",
|
|
20
|
-
"@synnaxlabs/alamos": "0.
|
|
21
|
-
"@synnaxlabs/x": "0.
|
|
20
|
+
"@synnaxlabs/alamos": "0.34.0",
|
|
21
|
+
"@synnaxlabs/x": "0.34.0"
|
|
22
22
|
},
|
|
23
23
|
"devDependencies": {
|
|
24
24
|
"@types/node": "^22.7.5",
|
|
25
|
-
"@vitest/coverage-v8": "^2.1.
|
|
25
|
+
"@vitest/coverage-v8": "^2.1.4",
|
|
26
|
+
"eslint": "^9.12.0",
|
|
26
27
|
"typescript": "^5.6.3",
|
|
27
|
-
"vite": "^5.4.
|
|
28
|
-
"vitest": "^2.1.
|
|
29
|
-
"@synnaxlabs/tsconfig": "0.0.2",
|
|
28
|
+
"vite": "^5.4.10",
|
|
29
|
+
"vitest": "^2.1.4",
|
|
30
30
|
"@synnaxlabs/vite-plugin": "0.0.1",
|
|
31
|
-
"eslint-config-synnaxlabs": "0.0.1"
|
|
31
|
+
"eslint-config-synnaxlabs": "0.0.1",
|
|
32
|
+
"@synnaxlabs/tsconfig": "0.0.2"
|
|
32
33
|
},
|
|
33
34
|
"main": "dist/freighter.cjs",
|
|
34
35
|
"module": "dist/freighter.js",
|
|
@@ -38,7 +39,7 @@
|
|
|
38
39
|
"watch": "tsc --noEmit && vite build --watch",
|
|
39
40
|
"test": "vitest",
|
|
40
41
|
"cov": "vitest --coverage",
|
|
41
|
-
"lint": "eslint
|
|
42
|
-
"fix": "eslint
|
|
42
|
+
"lint": "eslint --cache",
|
|
43
|
+
"fix": "eslint --cache --fix"
|
|
43
44
|
}
|
|
44
45
|
}
|
package/src/errors.spec.ts
CHANGED
|
@@ -29,9 +29,6 @@ import {
|
|
|
29
29
|
|
|
30
30
|
class MyCustomError extends BaseTypedError {
|
|
31
31
|
type = "MyCustomError";
|
|
32
|
-
constructor(message: string) {
|
|
33
|
-
super(message);
|
|
34
|
-
}
|
|
35
32
|
}
|
|
36
33
|
|
|
37
34
|
const myCustomErrorEncoder = (error: MyCustomError): ErrorPayload | null => {
|
|
@@ -39,9 +36,8 @@ const myCustomErrorEncoder = (error: MyCustomError): ErrorPayload | null => {
|
|
|
39
36
|
return { type: "MyCustomError", data: error.message };
|
|
40
37
|
};
|
|
41
38
|
|
|
42
|
-
const myCustomErrorDecoder = (encoded: ErrorPayload): TypedError =>
|
|
43
|
-
|
|
44
|
-
};
|
|
39
|
+
const myCustomErrorDecoder = (encoded: ErrorPayload): TypedError =>
|
|
40
|
+
new MyCustomError(encoded.data);
|
|
45
41
|
|
|
46
42
|
describe("errors", () => {
|
|
47
43
|
test("isTypedError", () => {
|
package/src/errors.ts
CHANGED
|
@@ -46,10 +46,6 @@ export const errorMatcher =
|
|
|
46
46
|
export class BaseTypedError extends Error implements TypedError {
|
|
47
47
|
readonly discriminator = "FreighterError";
|
|
48
48
|
type: string = "";
|
|
49
|
-
|
|
50
|
-
constructor(message?: string) {
|
|
51
|
-
super(message);
|
|
52
|
-
}
|
|
53
49
|
}
|
|
54
50
|
|
|
55
51
|
type ErrorDecoder = (encoded: ErrorPayload) => Error | null;
|
|
@@ -100,12 +96,11 @@ class Registry {
|
|
|
100
96
|
|
|
101
97
|
encode(error: unknown): ErrorPayload {
|
|
102
98
|
if (error == null) return { type: NONE, data: "" };
|
|
103
|
-
if (isTypedError(error))
|
|
99
|
+
if (isTypedError(error))
|
|
104
100
|
for (const provider of this.providers) {
|
|
105
101
|
const payload = provider.encode(error);
|
|
106
102
|
if (payload != null) return payload;
|
|
107
103
|
}
|
|
108
|
-
}
|
|
109
104
|
return { type: UNKNOWN, data: JSON.stringify(error) };
|
|
110
105
|
}
|
|
111
106
|
|
|
@@ -144,9 +139,7 @@ export const registerError = ({
|
|
|
144
139
|
* @param error - The error to encode.
|
|
145
140
|
* @returns The encoded error.
|
|
146
141
|
*/
|
|
147
|
-
export const encodeError = (error: unknown): ErrorPayload =>
|
|
148
|
-
return REGISTRY.encode(error);
|
|
149
|
-
};
|
|
142
|
+
export const encodeError = (error: unknown): ErrorPayload => REGISTRY.encode(error);
|
|
150
143
|
|
|
151
144
|
/**
|
|
152
145
|
* Decodes an error payload into an exception. If a custom decoder can be found
|
|
@@ -156,22 +149,18 @@ export const encodeError = (error: unknown): ErrorPayload => {
|
|
|
156
149
|
* @param payload - The encoded error payload.
|
|
157
150
|
* @returns The decoded error.
|
|
158
151
|
*/
|
|
159
|
-
export const decodeError = (payload: ErrorPayload): Error | null =>
|
|
160
|
-
|
|
161
|
-
};
|
|
152
|
+
export const decodeError = (payload: ErrorPayload): Error | null =>
|
|
153
|
+
REGISTRY.decode(payload);
|
|
162
154
|
|
|
163
155
|
export class UnknownError extends BaseTypedError implements TypedError {
|
|
164
156
|
type = "unknown";
|
|
165
|
-
constructor(message: string) {
|
|
166
|
-
super(message);
|
|
167
|
-
}
|
|
168
157
|
}
|
|
169
158
|
|
|
170
159
|
const FREIGHTER_ERROR_TYPE = "freighter.";
|
|
171
160
|
|
|
172
161
|
/** Thrown/returned when a stream closed normally. */
|
|
173
162
|
export class EOF extends BaseTypedError implements TypedError {
|
|
174
|
-
static readonly TYPE = FREIGHTER_ERROR_TYPE
|
|
163
|
+
static readonly TYPE = `${FREIGHTER_ERROR_TYPE}eof`;
|
|
175
164
|
type = EOF.TYPE;
|
|
176
165
|
static readonly matches = errorMatcher(EOF.TYPE);
|
|
177
166
|
|
|
@@ -182,7 +171,7 @@ export class EOF extends BaseTypedError implements TypedError {
|
|
|
182
171
|
|
|
183
172
|
/** Thrown/returned when a stream is closed abnormally. */
|
|
184
173
|
export class StreamClosed extends BaseTypedError implements TypedError {
|
|
185
|
-
static readonly TYPE = FREIGHTER_ERROR_TYPE
|
|
174
|
+
static readonly TYPE = `${FREIGHTER_ERROR_TYPE}stream_closed`;
|
|
186
175
|
static readonly matches = errorMatcher(StreamClosed.TYPE);
|
|
187
176
|
type = StreamClosed.TYPE;
|
|
188
177
|
|
|
@@ -198,7 +187,7 @@ export interface UnreachableArgs {
|
|
|
198
187
|
|
|
199
188
|
/** Thrown when a target is unreachable. */
|
|
200
189
|
export class Unreachable extends BaseTypedError implements TypedError {
|
|
201
|
-
static readonly TYPE = FREIGHTER_ERROR_TYPE
|
|
190
|
+
static readonly TYPE = `${FREIGHTER_ERROR_TYPE}unreachable`;
|
|
202
191
|
type = Unreachable.TYPE;
|
|
203
192
|
static readonly matches = errorMatcher(Unreachable.TYPE);
|
|
204
193
|
url: URL;
|
package/src/websocket.spec.ts
CHANGED
|
@@ -44,16 +44,15 @@ class MyCustomError extends BaseTypedError {
|
|
|
44
44
|
}
|
|
45
45
|
|
|
46
46
|
const encodeTestError = (err: TypedError): ErrorPayload => {
|
|
47
|
-
if (!(err instanceof MyCustomError))
|
|
48
|
-
|
|
49
|
-
}
|
|
47
|
+
if (!(err instanceof MyCustomError)) throw new Error("Unexpected error type");
|
|
48
|
+
|
|
50
49
|
return { type: "integration.error", data: `${err.code},${err.message}` };
|
|
51
50
|
};
|
|
52
51
|
|
|
53
52
|
const decodeTestError = (encoded: ErrorPayload): TypedError | null => {
|
|
54
53
|
if (encoded.type !== "integration.error") return null;
|
|
55
54
|
const [code, message] = encoded.data.split(",");
|
|
56
|
-
return new MyCustomError(message, parseInt(code
|
|
55
|
+
return new MyCustomError(message, parseInt(code));
|
|
57
56
|
};
|
|
58
57
|
|
|
59
58
|
registerError({
|