@synnaxlabs/x 0.44.0 → 0.44.2
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/.turbo/turbo-build.log +24 -24
- package/dist/box-CO_2_DGG.js +209 -0
- package/dist/box-Cxki783Y.cjs +1 -0
- package/dist/box.cjs +1 -1
- package/dist/box.js +1 -1
- package/dist/compare.cjs +1 -1
- package/dist/compare.js +1 -1
- package/dist/deep.cjs +1 -1
- package/dist/deep.js +56 -46
- package/dist/{external-BFgJjMcS.js → external-Birv9jaY.js} +1 -1
- package/dist/{external-mffsMzJx.cjs → external-DsmsSN1Y.cjs} +1 -1
- package/dist/{index-PNh31WTW.js → index-CBMHFqs4.js} +34 -33
- package/dist/index-DOJlZHqJ.cjs +1 -0
- package/dist/index.cjs +1 -1
- package/dist/index.js +9 -9
- package/dist/path-BeMr8xWN.cjs +1 -0
- package/dist/path-DVFrKaNI.js +107 -0
- package/dist/{position-DAL0Qqdf.cjs → position-DSy2hONH.cjs} +1 -1
- package/dist/{position-bA6pUwLn.js → position-PQ6op54I.js} +1 -1
- package/dist/position.cjs +1 -1
- package/dist/position.js +1 -1
- package/dist/{scale-Bzn1Cl0r.cjs → scale-C6qKDbRb.cjs} +1 -1
- package/dist/{scale-CdTNWu-d.js → scale-EWNUk-bn.js} +2 -2
- package/dist/scale.cjs +1 -1
- package/dist/scale.js +1 -1
- package/dist/{series-anlpaR_I.cjs → series-CcA_WjbJ.cjs} +1 -1
- package/dist/{series-BeJyqCoP.js → series-EA1uaEDj.js} +4 -4
- package/dist/spatial.cjs +1 -1
- package/dist/spatial.js +4 -4
- package/dist/src/deep/copy.d.ts.map +1 -1
- package/dist/src/deep/path.d.ts +1 -0
- package/dist/src/deep/path.d.ts.map +1 -1
- package/dist/src/observe/observe.d.ts +1 -0
- package/dist/src/observe/observe.d.ts.map +1 -1
- package/dist/src/primitive/primitive.d.ts +13 -1
- package/dist/src/primitive/primitive.d.ts.map +1 -1
- package/dist/src/spatial/box/box.d.ts +1 -0
- package/dist/src/spatial/box/box.d.ts.map +1 -1
- package/dist/src/spatial/xy/xy.d.ts +1 -0
- package/dist/src/spatial/xy/xy.d.ts.map +1 -1
- package/dist/telem.cjs +1 -1
- package/dist/telem.js +1 -1
- package/dist/xy-CUE3QDNn.cjs +1 -0
- package/dist/{xy-D_LqxaGt.js → xy-C_-hb3Q2.js} +27 -22
- package/dist/xy.cjs +1 -1
- package/dist/xy.js +1 -1
- package/dist/zod.cjs +1 -1
- package/dist/zod.js +1 -1
- package/package.json +3 -3
- package/src/deep/copy.ts +12 -1
- package/src/deep/path.spec.ts +27 -0
- package/src/deep/path.ts +10 -0
- package/src/observe/observe.ts +2 -0
- package/src/primitive/primitive.spec.ts +7 -4
- package/src/primitive/primitive.ts +17 -1
- package/src/spatial/box/box.ts +5 -0
- package/src/spatial/xy/xy.ts +5 -0
- package/src/testutil/testutil.spec.ts +6 -3
- package/tsconfig.tsbuildinfo +1 -1
- package/dist/box-BcGdqkt4.cjs +0 -1
- package/dist/box-D_qdUyEe.js +0 -205
- package/dist/index-B1m2qvBT.cjs +0 -1
- package/dist/path-BXdMenka.js +0 -101
- package/dist/path-st_E5-LJ.cjs +0 -1
- package/dist/xy-B7065J2S.cjs +0 -1
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { Destructor } from '../destructor';
|
|
2
2
|
/** Handler is called when the value of an Observable changes. */
|
|
3
3
|
export type Handler<T> = (value: T) => void;
|
|
4
|
+
export type AsyncHandler<T> = (value: T) => Promise<void>;
|
|
4
5
|
/** A generic interface for an entity whose value can be observed when it changes. */
|
|
5
6
|
export interface Observable<T> {
|
|
6
7
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"observe.d.ts","sourceRoot":"","sources":["../../../src/observe/observe.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,cAAc,CAAC;AAE/C,iEAAiE;AACjE,MAAM,MAAM,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC;AAE5C,qFAAqF;AACrF,MAAM,WAAW,UAAU,CAAC,CAAC;IAC3B;;;;;OAKG;IACH,QAAQ,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,UAAU,CAAC;CAC/C;AAED,gEAAgE;AAChE,MAAM,WAAW,wBAAwB,CAAC,CAAC,CAAE,SAAQ,UAAU,CAAC,CAAC,CAAC;IAChE,6BAA6B;IAC7B,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5B;AAED;;;;GAIG;AACH,MAAM,MAAM,SAAS,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,EAAE,KAAK,CAAC,CAAC;AAE1E;;GAEG;AACH,qBAAa,QAAQ,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAE,YAAW,wBAAwB,CAAC,CAAC,CAAC;IACpE,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAwB;IACjD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAkB;IAC7C,OAAO,CAAC,MAAM,CAAC,CAAsB;gBAEzB,SAAS,CAAC,EAAE,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC;IAKzE,2CAA2C;IAC3C,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,UAAU;IAKzC,0EAA0E;IAC1E,MAAM,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI;IAUtB,SAAS,CAAC,MAAM,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI;IAItC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAG7B;AAED,qBAAa,YAAY,CAAC,CAAC,CAAE,YAAW,UAAU,CAAC,CAAC,CAAC;IACnD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAwB;gBAErC,QAAQ,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC;IAI5C,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,UAAU;IAKzC,MAAM,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI;CAGvB"}
|
|
1
|
+
{"version":3,"file":"observe.d.ts","sourceRoot":"","sources":["../../../src/observe/observe.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,cAAc,CAAC;AAE/C,iEAAiE;AACjE,MAAM,MAAM,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC;AAE5C,MAAM,MAAM,YAAY,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;AAE1D,qFAAqF;AACrF,MAAM,WAAW,UAAU,CAAC,CAAC;IAC3B;;;;;OAKG;IACH,QAAQ,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,UAAU,CAAC;CAC/C;AAED,gEAAgE;AAChE,MAAM,WAAW,wBAAwB,CAAC,CAAC,CAAE,SAAQ,UAAU,CAAC,CAAC,CAAC;IAChE,6BAA6B;IAC7B,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5B;AAED;;;;GAIG;AACH,MAAM,MAAM,SAAS,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,EAAE,KAAK,CAAC,CAAC;AAE1E;;GAEG;AACH,qBAAa,QAAQ,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAE,YAAW,wBAAwB,CAAC,CAAC,CAAC;IACpE,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAwB;IACjD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAkB;IAC7C,OAAO,CAAC,MAAM,CAAC,CAAsB;gBAEzB,SAAS,CAAC,EAAE,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC;IAKzE,2CAA2C;IAC3C,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,UAAU;IAKzC,0EAA0E;IAC1E,MAAM,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI;IAUtB,SAAS,CAAC,MAAM,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI;IAItC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAG7B;AAED,qBAAa,YAAY,CAAC,CAAC,CAAE,YAAW,UAAU,CAAC,CAAC,CAAC;IACnD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAwB;gBAErC,QAAQ,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC;IAI5C,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,UAAU;IAKzC,MAAM,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI;CAGvB"}
|
|
@@ -26,6 +26,14 @@ export interface Stringer {
|
|
|
26
26
|
}
|
|
27
27
|
/** @returns true if the value implements primitive.Stringer, otherwise returns false. */
|
|
28
28
|
export declare const isStringer: (value: unknown) => boolean;
|
|
29
|
+
/**
|
|
30
|
+
* Type representing zero values for each primitive type
|
|
31
|
+
*/
|
|
32
|
+
export type ZeroValue = "" | 0 | 0n | false | null | undefined;
|
|
33
|
+
/**
|
|
34
|
+
* Type representing non-zero values for each primitive type
|
|
35
|
+
*/
|
|
36
|
+
export type NonZeroValue = Exclude<Value, ZeroValue>;
|
|
29
37
|
/**
|
|
30
38
|
* @returns true if the given primitive is the zero value for its type.
|
|
31
39
|
* For strings value == ""
|
|
@@ -35,5 +43,9 @@ export declare const isStringer: (value: unknown) => boolean;
|
|
|
35
43
|
* For objects value == null
|
|
36
44
|
* For undefined returns true
|
|
37
45
|
*/
|
|
38
|
-
export declare const isZero: <V extends Value>(value: V) =>
|
|
46
|
+
export declare const isZero: <V extends Value>(value: V) => value is V & ZeroValue;
|
|
47
|
+
/**
|
|
48
|
+
* Type predicate function that narrows to non-zero values
|
|
49
|
+
*/
|
|
50
|
+
export declare const isNonZero: <V extends Value>(value: V) => value is V & NonZeroValue;
|
|
39
51
|
//# sourceMappingURL=primitive.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"primitive.d.ts","sourceRoot":"","sources":["../../../src/primitive/primitive.ts"],"names":[],"mappings":"AASA,uFAAuF;AACvF,MAAM,MAAM,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,GAAG,IAAI,GAAG,SAAS,CAAC;AAErF;;;GAGG;AACH,qBAAa,cAAc,CAAC,CAAC,SAAS,WAAW,CAAC,KAAK,CAAC;IACtD,qCAAqC;IACrC,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;gBAEhB,KAAK,EAAE,CAAC;IAIpB,iFAAiF;IACjF,OAAO,IAAI,CAAC;IAIZ;0BACsB;IACtB,MAAM,IAAI,CAAC;IAIX,oDAAoD;IACpD,QAAQ,IAAI,MAAM;CAGnB;AAED;;;GAGG;AACH,MAAM,WAAW,QAAQ;IACvB,oDAAoD;IACpD,QAAQ,EAAE,MAAM,MAAM,CAAC;CACxB;AAED,yFAAyF;AACzF,eAAO,MAAM,UAAU,GAAI,OAAO,OAAO,KAAG,OACuB,CAAC;AAEpE;;;;;;;;GAQG;AACH,eAAO,MAAM,MAAM,GAAI,CAAC,SAAS,KAAK,EAAE,OAAO,CAAC,KAAG,
|
|
1
|
+
{"version":3,"file":"primitive.d.ts","sourceRoot":"","sources":["../../../src/primitive/primitive.ts"],"names":[],"mappings":"AASA,uFAAuF;AACvF,MAAM,MAAM,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,GAAG,IAAI,GAAG,SAAS,CAAC;AAErF;;;GAGG;AACH,qBAAa,cAAc,CAAC,CAAC,SAAS,WAAW,CAAC,KAAK,CAAC;IACtD,qCAAqC;IACrC,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;gBAEhB,KAAK,EAAE,CAAC;IAIpB,iFAAiF;IACjF,OAAO,IAAI,CAAC;IAIZ;0BACsB;IACtB,MAAM,IAAI,CAAC;IAIX,oDAAoD;IACpD,QAAQ,IAAI,MAAM;CAGnB;AAED;;;GAGG;AACH,MAAM,WAAW,QAAQ;IACvB,oDAAoD;IACpD,QAAQ,EAAE,MAAM,MAAM,CAAC;CACxB;AAED,yFAAyF;AACzF,eAAO,MAAM,UAAU,GAAI,OAAO,OAAO,KAAG,OACuB,CAAC;AAEpE;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,KAAK,GAAG,IAAI,GAAG,SAAS,CAAC;AAE/D;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,OAAO,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;AAErD;;;;;;;;GAQG;AACH,eAAO,MAAM,MAAM,GAAI,CAAC,SAAS,KAAK,EAAE,OAAO,CAAC,KAAG,KAAK,IAAI,CAAC,GAAG,SAkB/D,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,SAAS,GAAI,CAAC,SAAS,KAAK,EAAE,OAAO,CAAC,KAAG,KAAK,IAAI,CAAC,GAAG,YACnD,CAAC"}
|
|
@@ -235,5 +235,6 @@ export declare const truncate: (b: Crude, precision: number) => Box;
|
|
|
235
235
|
* @returns the box reinterpreted from the new root.
|
|
236
236
|
*/
|
|
237
237
|
export declare const constructWithAlternateRoot: (x: number, y: number, width: number, height: number, currRoot: location.XY, newRoot: location.CornerXY) => Box;
|
|
238
|
+
export declare const round: (b: Crude) => Box;
|
|
238
239
|
export {};
|
|
239
240
|
//# sourceMappingURL=box.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"box.d.ts","sourceRoot":"","sources":["../../../../src/spatial/box/box.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"box.d.ts","sourceRoot":"","sources":["../../../../src/spatial/box/box.ts"],"names":[],"mappings":"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"}
|
|
@@ -129,4 +129,5 @@ export declare const calculateMiters: (path: XY[], offset: number) => XY[];
|
|
|
129
129
|
* swap({ width: 5, height: 6 }) // returns { x: 6, y: 5 }
|
|
130
130
|
*/
|
|
131
131
|
export declare const swap: (a: Crude) => XY;
|
|
132
|
+
export declare const round: (a: Crude) => XY;
|
|
132
133
|
//# sourceMappingURL=xy.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"xy.d.ts","sourceRoot":"","sources":["../../../../src/spatial/xy/xy.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"xy.d.ts","sourceRoot":"","sources":["../../../../src/spatial/xy/xy.ts"],"names":[],"mappings":"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"}
|
package/dist/telem.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./series-
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./series-CcA_WjbJ.cjs");exports.DataType=e.DataType;exports.Density=e.Density;exports.MultiSeries=e.MultiSeries;exports.Rate=e.Rate;exports.Series=e.Series;exports.Size=e.Size;exports.TimeRange=e.TimeRange;exports.TimeSpan=e.TimeSpan;exports.TimeStamp=e.TimeStamp;exports.addSamples=e.addSamples;exports.convertDataType=e.convertDataType;exports.isCrudeSeries=e.isCrudeSeries;exports.isTelemValue=e.isTelemValue;exports.typedArrayZ=e.typedArrayZ;
|
package/dist/telem.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { c as s, D as i, M as t, R as r, S, d as m, b as p, a as T, T as d, g as y, f as l, i as n, e as D, t as o } from "./series-
|
|
1
|
+
import { c as s, D as i, M as t, R as r, S, d as m, b as p, a as T, T as d, g as y, f as l, i as n, e as D, t as o } from "./series-EA1uaEDj.js";
|
|
2
2
|
export {
|
|
3
3
|
s as DataType,
|
|
4
4
|
i as Density,
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";const O=require("zod"),y=require("./base-BAM2mqCy.cjs"),z=O.z.union([O.z.number(),y.xy,y.numberCouple,y.dimensions,y.signedDimensions,y.clientXY]),s=(t,n)=>{if(typeof t=="string"){if(n===void 0)throw new Error("The y coordinate must be given.");return t==="x"?{x:n,y:0}:{x:0,y:n}}return typeof t=="number"?{x:t,y:n??t}:Array.isArray(t)?{x:t[0],y:t[1]}:"signedWidth"in t?{x:t.signedWidth,y:t.signedHeight}:"clientX"in t?{x:t.clientX,y:t.clientY}:"width"in t?{x:t.width,y:t.height}:{x:t.x,y:t.y}},u=Object.freeze({x:0,y:0}),P=Object.freeze({x:1,y:1}),w=Object.freeze({x:1/0,y:1/0}),E=Object.freeze({x:NaN,y:NaN}),h=(t,n,e=0)=>{const r=s(t),o=s(n);return e===0?r.x===o.x&&r.y===o.y:Math.abs(r.x-o.x)<=e&&Math.abs(r.y-o.y)<=e},I=t=>h(t,u),g=(t,n,e)=>{const r=s(t),o=s(n,e);return{x:r.x*o.x,y:r.y*o.y}},_=(t,n)=>{const e=s(t);return{x:e.x+n,y:e.y}},j=(t,n)=>{const e=s(t);return{x:e.x,y:e.y+n}},M=(t,n,e,...r)=>typeof n=="string"&&typeof e=="number"?n==="x"?_(t,e):j(t,e):[t,n,e??u,...r].reduce((o,i)=>{const c=s(i);return{x:o.x+c.x,y:o.y+c.y}},u),Z=(t,n,e)=>{const r=s(t);return n==="x"?{x:e,y:r.y}:{x:r.x,y:e}},A=(t,n)=>{const e=s(t),r=s(n);return Math.sqrt((e.x-r.x)**2+(e.y-r.y)**2)},T=(t,n)=>{const e=s(t),r=s(n);return{x:r.x-e.x,y:r.y-e.y}},H=t=>{const n=s(t);return Number.isNaN(n.x)||Number.isNaN(n.y)},R=t=>{const n=s(t);return Number.isFinite(n.x)&&Number.isFinite(n.y)},S=t=>{const n=s(t);return[n.x,n.y]},W=t=>{const n=s(t);return{left:n.x,top:n.y}},F=(t,n=0)=>{const e=s(t);return{x:Number(e.x.toFixed(n)),y:Number(e.y.toFixed(n))}},N=(t,n)=>{const e=s(t),r=s(n);return{x:e.x-r.x,y:e.y-r.y}},m=t=>{const n=s(t),e=Math.hypot(n.x,n.y);return e===0?{x:0,y:0}:{x:-n.y/e,y:n.x/e}},X=t=>{const n=s(t),e=Math.hypot(n.x,n.y);return e===0?{x:0,y:0}:{x:n.x/e,y:n.y/e}},Y=(...t)=>{const n=t.reduce((e,r)=>M(e,r),u);return g(n,1/t.length)},C=(t,n)=>{const e=[];for(let r=0;r<t.length;r++){const o=t[r];let i,c,b,x;if(r===0){const a=t[r+1],l=N(a,o);c=m(l),b=c,x=n}else if(r===t.length-1){const a=t[r-1],l=N(o,a);i=m(l),b=i,x=n}else{const a=t[r-1],l=t[r+1],f=N(o,a),d=N(l,o);i=m(f),c=m(d);const v=Math.acos((f.x*d.x+f.y*d.y)/(Math.hypot(f.x,f.y)*Math.hypot(d.x,d.y))),p=Math.sin(v/2);p===0?x=n:x=n/p,b=X(Y(i,c))}e.push(g(b,x))}return e},D=t=>{const n=s(t);return{x:n.y,y:n.x}},q=t=>{const n=s(t);return{x:Math.round(n.x),y:Math.round(n.y)}},L=Object.freeze(Object.defineProperty({__proto__:null,INFINITY:w,NAN:E,ONE:P,ZERO:u,average:Y,calculateMiters:C,clientXY:y.clientXY,construct:s,couple:S,crudeZ:z,css:W,distance:A,equals:h,isFinite:R,isNan:H,isZero:I,normal:m,normalize:X,round:q,scale:g,set:Z,sub:N,swap:D,translate:M,translateX:_,translateY:j,translation:T,truncate:F,xy:y.xy},Symbol.toStringTag,{value:"Module"}));exports.ONE=P;exports.ZERO=u;exports.construct=s;exports.crudeZ=z;exports.equals=h;exports.round=q;exports.translate=M;exports.truncate=F;exports.xy=L;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { z as
|
|
1
|
+
import { z as g } from "zod";
|
|
2
2
|
import { x as p, n as w, d as I, s as A, i as M } from "./base-DFq0vvGn.js";
|
|
3
|
-
const X =
|
|
4
|
-
|
|
3
|
+
const X = g.union([
|
|
4
|
+
g.number(),
|
|
5
5
|
p,
|
|
6
6
|
w,
|
|
7
7
|
I,
|
|
@@ -13,10 +13,10 @@ const X = h.union([
|
|
|
13
13
|
return t === "x" ? { x: n, y: 0 } : { x: 0, y: n };
|
|
14
14
|
}
|
|
15
15
|
return typeof t == "number" ? { x: t, y: n ?? t } : Array.isArray(t) ? { x: t[0], y: t[1] } : "signedWidth" in t ? { x: t.signedWidth, y: t.signedHeight } : "clientX" in t ? { x: t.clientX, y: t.clientY } : "width" in t ? { x: t.width, y: t.height } : { x: t.x, y: t.y };
|
|
16
|
-
},
|
|
16
|
+
}, d = Object.freeze({ x: 0, y: 0 }), Y = Object.freeze({ x: 1, y: 1 }), Z = Object.freeze({ x: 1 / 0, y: 1 / 0 }), E = Object.freeze({ x: NaN, y: NaN }), O = (t, n, e = 0) => {
|
|
17
17
|
const r = s(t), o = s(n);
|
|
18
18
|
return e === 0 ? r.x === o.x && r.y === o.y : Math.abs(r.x - o.x) <= e && Math.abs(r.y - o.y) <= e;
|
|
19
|
-
}, T = (t) => O(t,
|
|
19
|
+
}, T = (t) => O(t, d), b = (t, n, e) => {
|
|
20
20
|
const r = s(t), o = s(n, e);
|
|
21
21
|
return { x: r.x * o.x, y: r.y * o.y };
|
|
22
22
|
}, P = (t, n) => {
|
|
@@ -25,10 +25,10 @@ const X = h.union([
|
|
|
25
25
|
}, _ = (t, n) => {
|
|
26
26
|
const e = s(t);
|
|
27
27
|
return { x: e.x, y: e.y + n };
|
|
28
|
-
}, z = (t, n, e, ...r) => typeof n == "string" && typeof e == "number" ? n === "x" ? P(t, e) : _(t, e) : [t, n, e ??
|
|
29
|
-
const c = s(
|
|
28
|
+
}, z = (t, n, e, ...r) => typeof n == "string" && typeof e == "number" ? n === "x" ? P(t, e) : _(t, e) : [t, n, e ?? d, ...r].reduce((o, y) => {
|
|
29
|
+
const c = s(y);
|
|
30
30
|
return { x: o.x + c.x, y: o.y + c.y };
|
|
31
|
-
},
|
|
31
|
+
}, d), q = (t, n, e) => {
|
|
32
32
|
const r = s(t);
|
|
33
33
|
return n === "x" ? { x: e, y: r.y } : { x: r.x, y: e };
|
|
34
34
|
}, H = (t, n) => {
|
|
@@ -62,39 +62,42 @@ const X = h.union([
|
|
|
62
62
|
const n = s(t), e = Math.hypot(n.x, n.y);
|
|
63
63
|
return e === 0 ? { x: 0, y: 0 } : { x: n.x / e, y: n.y / e };
|
|
64
64
|
}, F = (...t) => {
|
|
65
|
-
const n = t.reduce((e, r) => z(e, r),
|
|
66
|
-
return
|
|
65
|
+
const n = t.reduce((e, r) => z(e, r), d);
|
|
66
|
+
return b(n, 1 / t.length);
|
|
67
67
|
}, $ = (t, n) => {
|
|
68
68
|
const e = [];
|
|
69
69
|
for (let r = 0; r < t.length; r++) {
|
|
70
70
|
const o = t[r];
|
|
71
|
-
let
|
|
71
|
+
let y, c, N, i;
|
|
72
72
|
if (r === 0) {
|
|
73
73
|
const x = t[r + 1], u = f(x, o);
|
|
74
|
-
c = m(u),
|
|
74
|
+
c = m(u), N = c, i = n;
|
|
75
75
|
} else if (r === t.length - 1) {
|
|
76
76
|
const x = t[r - 1], u = f(o, x);
|
|
77
|
-
|
|
77
|
+
y = m(u), N = y, i = n;
|
|
78
78
|
} else {
|
|
79
79
|
const x = t[r - 1], u = t[r + 1], a = f(o, x), l = f(u, o);
|
|
80
|
-
|
|
80
|
+
y = m(a), c = m(l);
|
|
81
81
|
const v = Math.acos(
|
|
82
82
|
(a.x * l.x + a.y * l.y) / (Math.hypot(a.x, a.y) * Math.hypot(l.x, l.y))
|
|
83
|
-
),
|
|
84
|
-
|
|
83
|
+
), h = Math.sin(v / 2);
|
|
84
|
+
h === 0 ? i = n : i = n / h, N = j(F(y, c));
|
|
85
85
|
}
|
|
86
|
-
e.push(
|
|
86
|
+
e.push(b(N, i));
|
|
87
87
|
}
|
|
88
88
|
return e;
|
|
89
89
|
}, k = (t) => {
|
|
90
90
|
const n = s(t);
|
|
91
91
|
return { x: n.y, y: n.x };
|
|
92
|
-
},
|
|
92
|
+
}, B = (t) => {
|
|
93
|
+
const n = s(t);
|
|
94
|
+
return { x: Math.round(n.x), y: Math.round(n.y) };
|
|
95
|
+
}, K = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
93
96
|
__proto__: null,
|
|
94
97
|
INFINITY: Z,
|
|
95
98
|
NAN: E,
|
|
96
99
|
ONE: Y,
|
|
97
|
-
ZERO:
|
|
100
|
+
ZERO: d,
|
|
98
101
|
average: F,
|
|
99
102
|
calculateMiters: $,
|
|
100
103
|
clientXY: M,
|
|
@@ -109,7 +112,8 @@ const X = h.union([
|
|
|
109
112
|
isZero: T,
|
|
110
113
|
normal: m,
|
|
111
114
|
normalize: j,
|
|
112
|
-
|
|
115
|
+
round: B,
|
|
116
|
+
scale: b,
|
|
113
117
|
set: q,
|
|
114
118
|
sub: f,
|
|
115
119
|
swap: k,
|
|
@@ -122,11 +126,12 @@ const X = h.union([
|
|
|
122
126
|
}, Symbol.toStringTag, { value: "Module" }));
|
|
123
127
|
export {
|
|
124
128
|
Y as O,
|
|
125
|
-
|
|
129
|
+
d as Z,
|
|
126
130
|
R as a,
|
|
127
131
|
X as b,
|
|
128
132
|
s as c,
|
|
129
133
|
O as e,
|
|
134
|
+
B as r,
|
|
130
135
|
z as t,
|
|
131
|
-
|
|
136
|
+
K as x
|
|
132
137
|
};
|
package/dist/xy.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./xy-
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./xy-CUE3QDNn.cjs");exports.xy=e.xy;
|
package/dist/xy.js
CHANGED
package/dist/zod.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./external-
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./external-DsmsSN1Y.cjs");exports.zod=e.external;
|
package/dist/zod.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@synnaxlabs/x",
|
|
3
|
-
"version": "0.44.
|
|
3
|
+
"version": "0.44.2",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Common Utilities for Synnax Labs",
|
|
6
6
|
"repository": "https://github.com/synnaxlabs/synnax/tree/main/x/go",
|
|
@@ -27,9 +27,9 @@
|
|
|
27
27
|
"typescript": "^5.8.3",
|
|
28
28
|
"vite": "^7.0.4",
|
|
29
29
|
"vitest": "^3.2.4",
|
|
30
|
-
"@synnaxlabs/tsconfig": "^0.43.0",
|
|
31
30
|
"@synnaxlabs/vite-plugin": "^0.43.0",
|
|
32
|
-
"eslint-config-synnaxlabs": "^0.43.0"
|
|
31
|
+
"eslint-config-synnaxlabs": "^0.43.0",
|
|
32
|
+
"@synnaxlabs/tsconfig": "^0.43.0"
|
|
33
33
|
},
|
|
34
34
|
"main": "./dist/index.cjs",
|
|
35
35
|
"module": "./dist/index.js",
|
package/src/deep/copy.ts
CHANGED
|
@@ -7,4 +7,15 @@
|
|
|
7
7
|
// License, use of this software will be governed by the Apache License, Version 2.0,
|
|
8
8
|
// included in the file licenses/APL.txt.
|
|
9
9
|
|
|
10
|
-
export const copy = <T>(obj: T): T =>
|
|
10
|
+
export const copy = <T>(obj: T): T => {
|
|
11
|
+
try {
|
|
12
|
+
return structuredClone(obj);
|
|
13
|
+
} catch (_) {
|
|
14
|
+
console.warn(
|
|
15
|
+
"Failed to deep copy object, falling back to JSON.parse(JSON.stringify)",
|
|
16
|
+
obj,
|
|
17
|
+
);
|
|
18
|
+
console.trace();
|
|
19
|
+
return JSON.parse(JSON.stringify(obj));
|
|
20
|
+
}
|
|
21
|
+
};
|
package/src/deep/path.spec.ts
CHANGED
|
@@ -184,6 +184,33 @@ describe("path", () => {
|
|
|
184
184
|
expect(deep.pathsMatch("a.b.c", "")).toEqual(true);
|
|
185
185
|
});
|
|
186
186
|
});
|
|
187
|
+
|
|
188
|
+
describe("resolvePath", () => {
|
|
189
|
+
it("should resolve a path", () => {
|
|
190
|
+
expect(deep.resolvePath("a.b.c", { a: { b: { c: 1 } } })).toEqual("a.b.c");
|
|
191
|
+
});
|
|
192
|
+
|
|
193
|
+
it("should resolve a path with a keyed record", () => {
|
|
194
|
+
expect(deep.resolvePath("a.b.c", { a: { b: { c: 1 } } })).toEqual("a.b.c");
|
|
195
|
+
});
|
|
196
|
+
|
|
197
|
+
it("should resolve a path with a record in an array", () => {
|
|
198
|
+
expect(deep.resolvePath("a.b.c", { a: { b: [{ c: 1 }] } })).toEqual("a.b.c");
|
|
199
|
+
});
|
|
200
|
+
|
|
201
|
+
it("should resolve a path with a keyed record in an array with a key", () => {
|
|
202
|
+
expect(deep.resolvePath("a.b.0.d", { a: { b: [{ key: "c", d: 1 }] } })).toEqual(
|
|
203
|
+
"a.b.c.d",
|
|
204
|
+
);
|
|
205
|
+
});
|
|
206
|
+
|
|
207
|
+
it("should not modify a path that has a keyed record accessed by key", () => {
|
|
208
|
+
expect(deep.resolvePath("a.b.c.d", { a: { b: [{ key: "c", c: 1 }] } })).toEqual(
|
|
209
|
+
"a.b.c.d",
|
|
210
|
+
);
|
|
211
|
+
});
|
|
212
|
+
});
|
|
213
|
+
|
|
187
214
|
describe("delete", () => {
|
|
188
215
|
const a: TestRecord = {
|
|
189
216
|
a: 1,
|
package/src/deep/path.ts
CHANGED
|
@@ -126,6 +126,16 @@ const defaultGetter = (obj: record.Unknown, key: string): unknown => {
|
|
|
126
126
|
return undefined;
|
|
127
127
|
};
|
|
128
128
|
|
|
129
|
+
export const resolvePath = <T = record.Unknown>(path: string, obj: T): string => {
|
|
130
|
+
const parts = path.split(".");
|
|
131
|
+
parts.forEach((part, i) => {
|
|
132
|
+
obj = defaultGetter(obj as record.Unknown, part) as T;
|
|
133
|
+
if (obj != null && typeof obj === "object" && "key" in obj)
|
|
134
|
+
parts[i] = obj.key as string;
|
|
135
|
+
});
|
|
136
|
+
return parts.join(".");
|
|
137
|
+
};
|
|
138
|
+
|
|
129
139
|
/**
|
|
130
140
|
* Gets the value at the given path on the object. If the path does not exist
|
|
131
141
|
* and the optional flag is set to true, null will be returned. If the path does
|
package/src/observe/observe.ts
CHANGED
|
@@ -12,6 +12,8 @@ import { type Destructor } from "@/destructor";
|
|
|
12
12
|
/** Handler is called when the value of an Observable changes. */
|
|
13
13
|
export type Handler<T> = (value: T) => void;
|
|
14
14
|
|
|
15
|
+
export type AsyncHandler<T> = (value: T) => Promise<void>;
|
|
16
|
+
|
|
15
17
|
/** A generic interface for an entity whose value can be observed when it changes. */
|
|
16
18
|
export interface Observable<T> {
|
|
17
19
|
/**
|
|
@@ -7,11 +7,12 @@
|
|
|
7
7
|
// License, use of this software will be governed by the Apache License, Version 2.0,
|
|
8
8
|
// included in the file licenses/APL.txt.
|
|
9
9
|
|
|
10
|
-
import { describe, expect, it } from "vitest";
|
|
10
|
+
import { describe, expect, it, test } from "vitest";
|
|
11
11
|
import { z } from "zod";
|
|
12
12
|
|
|
13
13
|
import { binary } from "@/binary";
|
|
14
14
|
import { primitive } from "@/primitive";
|
|
15
|
+
import { testutil } from "@/testutil";
|
|
15
16
|
|
|
16
17
|
class ExampleStringer implements primitive.Stringer {
|
|
17
18
|
readonly value: string;
|
|
@@ -25,7 +26,7 @@ class ExampleStringer implements primitive.Stringer {
|
|
|
25
26
|
}
|
|
26
27
|
|
|
27
28
|
describe("primitive", () => {
|
|
28
|
-
describe("isZero", () => {
|
|
29
|
+
describe("isZero and isNonZero", () => {
|
|
29
30
|
interface Spec {
|
|
30
31
|
value: primitive.Value;
|
|
31
32
|
expected: boolean;
|
|
@@ -42,10 +43,12 @@ describe("primitive", () => {
|
|
|
42
43
|
{ value: new ExampleStringer("cat"), expected: false },
|
|
43
44
|
];
|
|
44
45
|
SPECS.forEach(({ value, expected }) => {
|
|
45
|
-
|
|
46
|
-
it(`should return ${expected} for ${value} ${typeof value}`, () => {
|
|
46
|
+
test(`isZero should return ${expected} for ${testutil.toString(value)}`, () => {
|
|
47
47
|
expect(primitive.isZero(value)).toEqual(expected);
|
|
48
48
|
});
|
|
49
|
+
test(`isNonZero should return ${!expected} for ${testutil.toString(value)}`, () => {
|
|
50
|
+
expect(primitive.isNonZero(value)).toEqual(!expected);
|
|
51
|
+
});
|
|
49
52
|
});
|
|
50
53
|
});
|
|
51
54
|
|
|
@@ -52,6 +52,16 @@ export interface Stringer {
|
|
|
52
52
|
export const isStringer = (value: unknown): boolean =>
|
|
53
53
|
value != null && typeof value === "object" && "toString" in value;
|
|
54
54
|
|
|
55
|
+
/**
|
|
56
|
+
* Type representing zero values for each primitive type
|
|
57
|
+
*/
|
|
58
|
+
export type ZeroValue = "" | 0 | 0n | false | null | undefined;
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* Type representing non-zero values for each primitive type
|
|
62
|
+
*/
|
|
63
|
+
export type NonZeroValue = Exclude<Value, ZeroValue>;
|
|
64
|
+
|
|
55
65
|
/**
|
|
56
66
|
* @returns true if the given primitive is the zero value for its type.
|
|
57
67
|
* For strings value == ""
|
|
@@ -61,7 +71,7 @@ export const isStringer = (value: unknown): boolean =>
|
|
|
61
71
|
* For objects value == null
|
|
62
72
|
* For undefined returns true
|
|
63
73
|
*/
|
|
64
|
-
export const isZero = <V extends Value>(value: V):
|
|
74
|
+
export const isZero = <V extends Value>(value: V): value is V & ZeroValue => {
|
|
65
75
|
if (isStringer(value)) return value?.toString().length === 0;
|
|
66
76
|
switch (typeof value) {
|
|
67
77
|
case "string":
|
|
@@ -80,3 +90,9 @@ export const isZero = <V extends Value>(value: V): boolean => {
|
|
|
80
90
|
return false;
|
|
81
91
|
}
|
|
82
92
|
};
|
|
93
|
+
|
|
94
|
+
/**
|
|
95
|
+
* Type predicate function that narrows to non-zero values
|
|
96
|
+
*/
|
|
97
|
+
export const isNonZero = <V extends Value>(value: V): value is V & NonZeroValue =>
|
|
98
|
+
!isZero(value);
|
package/src/spatial/box/box.ts
CHANGED
|
@@ -484,3 +484,8 @@ export const constructWithAlternateRoot = (
|
|
|
484
484
|
}
|
|
485
485
|
return construct(first, second, undefined, undefined, newRoot);
|
|
486
486
|
};
|
|
487
|
+
|
|
488
|
+
export const round = (b: Crude): Box => {
|
|
489
|
+
const b_ = construct(b);
|
|
490
|
+
return construct(xy.round(b_.one), xy.round(b_.two), undefined, undefined, b_.root);
|
|
491
|
+
};
|
package/src/spatial/xy/xy.ts
CHANGED
|
@@ -77,7 +77,8 @@ describe("testutil", () => {
|
|
|
77
77
|
it("should call function multiple times over duration", async () => {
|
|
78
78
|
const fn = vi.fn();
|
|
79
79
|
await testutil.expectAlways(fn, 100, 20);
|
|
80
|
-
expect(fn).
|
|
80
|
+
expect(fn.mock.calls.length).toBeGreaterThanOrEqual(3);
|
|
81
|
+
expect(fn.mock.calls.length).toBeLessThanOrEqual(7);
|
|
81
82
|
});
|
|
82
83
|
|
|
83
84
|
it("should handle async functions", async () => {
|
|
@@ -117,7 +118,8 @@ describe("testutil", () => {
|
|
|
117
118
|
it("should use default values when not provided", async () => {
|
|
118
119
|
const fn = vi.fn();
|
|
119
120
|
await testutil.expectAlways(fn);
|
|
120
|
-
expect(fn.mock.calls.length).toBeGreaterThanOrEqual(
|
|
121
|
+
expect(fn.mock.calls.length).toBeGreaterThanOrEqual(7);
|
|
122
|
+
expect(fn.mock.calls.length).toBeLessThanOrEqual(12);
|
|
121
123
|
});
|
|
122
124
|
|
|
123
125
|
it("should respect custom interval", async () => {
|
|
@@ -127,7 +129,8 @@ describe("testutil", () => {
|
|
|
127
129
|
const elapsed = Date.now() - start;
|
|
128
130
|
expect(elapsed).toBeGreaterThanOrEqual(90);
|
|
129
131
|
expect(elapsed).toBeLessThan(150);
|
|
130
|
-
expect(fn).
|
|
132
|
+
expect(fn.mock.calls.length).toBeGreaterThanOrEqual(3);
|
|
133
|
+
expect(fn.mock.calls.length).toBeLessThanOrEqual(5);
|
|
131
134
|
});
|
|
132
135
|
|
|
133
136
|
it("should handle functions that pass after initial failures", async () => {
|