@typeonce/ritmo-math 0.12.0 → 0.14.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/CHANGELOG.md +60 -0
- package/README.md +3 -3
- package/dist/Aabb.d.ts +15 -15
- package/dist/Aabb.d.ts.map +1 -1
- package/dist/Aabb.js +13 -5
- package/dist/Aabb.js.map +1 -1
- package/dist/Collide2.d.ts +48 -14
- package/dist/Collide2.d.ts.map +1 -1
- package/dist/Collide2.js +140 -17
- package/dist/Collide2.js.map +1 -1
- package/dist/Random.d.ts +16 -6
- package/dist/Random.d.ts.map +1 -1
- package/dist/Random.js +13 -3
- package/dist/Random.js.map +1 -1
- package/dist/Scalar.d.ts +26 -7
- package/dist/Scalar.d.ts.map +1 -1
- package/dist/Scalar.js +6 -3
- package/dist/Scalar.js.map +1 -1
- package/dist/Segment2.d.ts +56 -0
- package/dist/Segment2.d.ts.map +1 -0
- package/dist/Segment2.js +32 -0
- package/dist/Segment2.js.map +1 -0
- package/dist/Size2.d.ts +15 -15
- package/dist/Size2.d.ts.map +1 -1
- package/dist/Size2.js +13 -5
- package/dist/Size2.js.map +1 -1
- package/dist/Vector2.d.ts +15 -15
- package/dist/Vector2.d.ts.map +1 -1
- package/dist/Vector2.js +13 -5
- package/dist/Vector2.js.map +1 -1
- package/dist/index.d.ts +6 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -4
- package/dist/index.js.map +1 -1
- package/dist/internal/aabb.d.ts +9 -2
- package/dist/internal/aabb.d.ts.map +1 -1
- package/dist/internal/aabb.js +3 -1
- package/dist/internal/aabb.js.map +1 -1
- package/dist/internal/codec.d.ts +9 -0
- package/dist/internal/codec.d.ts.map +1 -0
- package/dist/internal/codec.js +16 -0
- package/dist/internal/codec.js.map +1 -0
- package/dist/internal/scalar.d.ts +3 -4
- package/dist/internal/scalar.d.ts.map +1 -1
- package/dist/internal/scalar.js +19 -12
- package/dist/internal/scalar.js.map +1 -1
- package/dist/internal/size2.d.ts +9 -2
- package/dist/internal/size2.d.ts.map +1 -1
- package/dist/internal/size2.js +3 -1
- package/dist/internal/size2.js.map +1 -1
- package/dist/internal/vector2.d.ts +9 -2
- package/dist/internal/vector2.d.ts.map +1 -1
- package/dist/internal/vector2.js +3 -1
- package/dist/internal/vector2.js.map +1 -1
- package/package.json +2 -2
- package/src/Aabb.ts +15 -16
- package/src/Collide2.ts +153 -22
- package/src/Random.ts +21 -7
- package/src/Scalar.ts +27 -7
- package/src/Segment2.ts +71 -0
- package/src/Size2.ts +15 -16
- package/src/Vector2.ts +15 -16
- package/src/index.ts +6 -4
- package/src/internal/aabb.ts +8 -2
- package/src/internal/codec.ts +21 -0
- package/src/internal/scalar.ts +24 -13
- package/src/internal/size2.ts +8 -2
- package/src/internal/vector2.ts +8 -2
package/dist/index.js
CHANGED
|
@@ -2,12 +2,13 @@
|
|
|
2
2
|
* Math for game code.
|
|
3
3
|
*
|
|
4
4
|
* Validated values (`Scalar`, `Vector2`, `Size2`, `Aabb`) expose
|
|
5
|
-
* Result-returning constructors,
|
|
6
|
-
* `Descriptor.ConstructedComponent(
|
|
7
|
-
* validated once at the boundary. `InputAxis` normalizes directional input.
|
|
5
|
+
* Result-returning constructors, a guard (`is`), and one `codec` each, so
|
|
6
|
+
* they plug into `Descriptor.ConstructedComponent(Vector2.codec)` /
|
|
7
|
+
* `ConstructedResource(Random.codec)` and are validated once at the boundary. `InputAxis` normalizes directional input.
|
|
8
8
|
*
|
|
9
9
|
* Hot-path helpers work on plain numbers every frame: `Vec2` arithmetic,
|
|
10
|
-
* `Box2` edges, `
|
|
10
|
+
* `Box2` edges, `Segment2` walls at any angle, `Collide2` swept circle
|
|
11
|
+
* collision against both, a `SpatialGrid` broad
|
|
11
12
|
* phase, a `FlowField` for finding the way around walls, and a deterministic
|
|
12
13
|
* `Random` whose state is one integer.
|
|
13
14
|
*
|
|
@@ -23,6 +24,7 @@ export * as InputAxis from "./InputAxis.js";
|
|
|
23
24
|
export * as Ops from "./Ops.js";
|
|
24
25
|
export * as Random from "./Random.js";
|
|
25
26
|
export * as Scalar from "./Scalar.js";
|
|
27
|
+
export * as Segment2 from "./Segment2.js";
|
|
26
28
|
export * as Size2 from "./Size2.js";
|
|
27
29
|
export * as SpatialGrid from "./SpatialGrid.js";
|
|
28
30
|
export * as Vec2 from "./Vec2.js";
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA;AACjC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA;AACjC,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAA;AACzC,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAA;AAC3C,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAA;AAC3C,OAAO,KAAK,GAAG,MAAM,UAAU,CAAA;AAC/B,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AACrC,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AACrC,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAA;AACzC,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA;AACnC,OAAO,KAAK,WAAW,MAAM,kBAAkB,CAAA;AAC/C,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA;AACjC,OAAO,KAAK,OAAO,MAAM,cAAc,CAAA"}
|
package/dist/internal/aabb.d.ts
CHANGED
|
@@ -5,7 +5,7 @@ import type * as Aabb from "../Aabb.ts";
|
|
|
5
5
|
import type * as Scalar from "../Scalar.ts";
|
|
6
6
|
export declare const result: (raw: Aabb.Raw) => Result.Result<Aabb.Aabb, Aabb.Error>;
|
|
7
7
|
export declare const option: (raw: Aabb.Raw) => Aabb.Aabb | null;
|
|
8
|
-
export declare const is: (raw:
|
|
8
|
+
export declare const is: (raw: unknown) => raw is Aabb.Aabb;
|
|
9
9
|
export declare const position: (aabb: Aabb.Aabb) => Vector2.Vector2;
|
|
10
10
|
export declare const size: (aabb: Aabb.Aabb) => Size2.Size2;
|
|
11
11
|
export declare const left: (aabb: Aabb.Aabb) => Scalar.Finite;
|
|
@@ -16,5 +16,12 @@ export declare const intersects: (first: Aabb.Aabb, second: Aabb.Aabb) => boolea
|
|
|
16
16
|
export declare const overlapsHorizontally: (first: Aabb.Aabb, second: Aabb.Aabb) => boolean;
|
|
17
17
|
export declare const overlapsVertically: (first: Aabb.Aabb, second: Aabb.Aabb) => boolean;
|
|
18
18
|
export declare const translate: (aabb: Aabb.Aabb, delta: Vector2.Vector2) => Aabb.Aabb;
|
|
19
|
-
|
|
19
|
+
/** Untrusted input without the raw shape. */
|
|
20
|
+
type Malformed = {
|
|
21
|
+
readonly tag: "Aabb/Malformed";
|
|
22
|
+
readonly input: unknown;
|
|
23
|
+
};
|
|
24
|
+
export declare const decode: (raw: unknown) => Result.Result<Aabb.Aabb, Aabb.Error | Malformed>;
|
|
25
|
+
export declare const codec: import("@typeonce/ritmo/Descriptor").StandardSchema<Aabb.Raw, Aabb.Aabb>;
|
|
26
|
+
export {};
|
|
20
27
|
//# sourceMappingURL=aabb.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aabb.d.ts","sourceRoot":"","sources":["../../src/internal/aabb.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"aabb.d.ts","sourceRoot":"","sources":["../../src/internal/aabb.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,MAAM,wBAAwB,CAAA;AAChD,OAAO,KAAK,KAAK,MAAM,aAAa,CAAA;AACpC,OAAO,KAAK,OAAO,MAAM,eAAe,CAAA;AACxC,OAAO,KAAK,KAAK,IAAI,MAAM,YAAY,CAAA;AACvC,OAAO,KAAK,KAAK,MAAM,MAAM,cAAc,CAAA;AAO3C,eAAO,MAAM,MAAM,QAAS,IAAI,CAAC,GAAG,KAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAoBzE,CAAA;AAED,eAAO,MAAM,MAAM,QAAS,IAAI,CAAC,GAAG,KAAG,IAAI,CAAC,IAAI,GAAG,IAGlD,CAAA;AAED,eAAO,MAAM,EAAE,QAAS,OAAO,KAAG,GAAG,IAAI,IAAI,CAAC,IAAsB,CAAA;AAEpE,eAAO,MAAM,QAAQ,SAAU,IAAI,CAAC,IAAI,KAAG,OAAO,CAAC,OAAwB,CAAA;AAC3E,eAAO,MAAM,IAAI,SAAU,IAAI,CAAC,IAAI,KAAG,KAAK,CAAC,KAAkB,CAAA;AAE/D,eAAO,MAAM,IAAI,SAAU,IAAI,CAAC,IAAI,KAAG,MAAM,CAAC,MACc,CAAA;AAE5D,eAAO,MAAM,KAAK,SAAU,IAAI,CAAC,IAAI,KAAG,MAAM,CAAC,MACa,CAAA;AAE5D,eAAO,MAAM,GAAG,SAAU,IAAI,CAAC,IAAI,KAAG,MAAM,CAAC,MACgB,CAAA;AAE7D,eAAO,MAAM,MAAM,SAAU,IAAI,CAAC,IAAI,KAAG,MAAM,CAAC,MACa,CAAA;AAE7D,eAAO,MAAM,UAAU,UAAW,IAAI,CAAC,IAAI,UAAU,IAAI,CAAC,IAAI,KAAG,OAE4B,CAAA;AAE7F,eAAO,MAAM,oBAAoB,UAAW,IAAI,CAAC,IAAI,UAAU,IAAI,CAAC,IAAI,KAAG,OACf,CAAA;AAE5D,eAAO,MAAM,kBAAkB,UAAW,IAAI,CAAC,IAAI,UAAU,IAAI,CAAC,IAAI,KAAG,OACb,CAAA;AAE5D,eAAO,MAAM,SAAS,SAAU,IAAI,CAAC,IAAI,SAAS,OAAO,CAAC,OAAO,KAAG,IAAI,CAAC,IACrB,CAAA;AAEpD,6CAA6C;AAC7C,KAAK,SAAS,GAAG;IAAE,QAAQ,CAAC,GAAG,EAAE,gBAAgB,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAA;CAAE,CAAA;AAE5E,eAAO,MAAM,MAAM,QAAS,OAAO,KAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,GAAG,SAAS,CAMpF,CAAA;AAED,eAAO,MAAM,KAAK,0EAAmH,CAAA"}
|
package/dist/internal/aabb.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { codecOf } from "./codec.js";
|
|
1
2
|
import * as Result from "@typeonce/ritmo/Result";
|
|
2
3
|
import * as Size2 from "../Size2.js";
|
|
3
4
|
import * as Vector2 from "../Vector2.js";
|
|
@@ -27,7 +28,7 @@ export const option = (raw) => {
|
|
|
27
28
|
const next = result(raw);
|
|
28
29
|
return next.ok ? next.value : null;
|
|
29
30
|
};
|
|
30
|
-
export const is = (raw) =>
|
|
31
|
+
export const is = (raw) => decode(raw).ok;
|
|
31
32
|
export const position = (aabb) => aabb.position;
|
|
32
33
|
export const size = (aabb) => aabb.size;
|
|
33
34
|
export const left = (aabb) => (aabb.position.x - aabb.size.width * 0.5);
|
|
@@ -47,4 +48,5 @@ export const decode = (raw) => {
|
|
|
47
48
|
? result({ position, size })
|
|
48
49
|
: Result.failure({ tag: "Aabb/Malformed", input: raw });
|
|
49
50
|
};
|
|
51
|
+
export const codec = codecOf(decode, "a box { x, y, width, height } of finite numbers with a non-negative size");
|
|
50
52
|
//# sourceMappingURL=aabb.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aabb.js","sourceRoot":"","sources":["../../src/internal/aabb.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,wBAAwB,CAAA;AAChD,OAAO,KAAK,KAAK,MAAM,aAAa,CAAA;AACpC,OAAO,KAAK,OAAO,MAAM,eAAe,CAAA;AAGxC,OAAO,EAAE,UAAU,IAAI,YAAY,EAAE,MAAM,YAAY,CAAA;AACvD,OAAO,EAAE,UAAU,IAAI,cAAc,EAAE,MAAM,cAAc,CAAA;AAE3D,MAAM,IAAI,GAAG,CAAC,QAAyB,EAAE,IAAiB,EAAa,EAAE,CACvE,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAc,CAAA;AAEnC,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,GAAa,EAAwC,EAAE;IAC5E,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;IAC7C,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,OAAO,MAAM,CAAC,OAAO,CAAC;YACpB,GAAG,EAAE,sBAAsB;YAC3B,KAAK,EAAE,QAAQ,CAAC,KAAK;YACrB,KAAK,EAAE,GAAG;SACX,CAAC,CAAA;IACJ,CAAC;IAED,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;IACnC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;QACb,OAAO,MAAM,CAAC,OAAO,CAAC;YACpB,GAAG,EAAE,kBAAkB;YACvB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,KAAK,EAAE,GAAG;SACX,CAAC,CAAA;IACJ,CAAC;IAED,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAA;AACzD,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,GAAa,EAAoB,EAAE;IACxD,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,CAAA;IACxB,OAAO,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAA;AACpC,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,
|
|
1
|
+
{"version":3,"file":"aabb.js","sourceRoot":"","sources":["../../src/internal/aabb.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { StandardSchema } from "@typeonce/ritmo/Descriptor";
|
|
2
|
+
import type * as Result from "@typeonce/ritmo/Result";
|
|
3
|
+
/**
|
|
4
|
+
* The codec of one math type, from its decode: a Standard Schema whose saved
|
|
5
|
+
* form is the raw shape. The value is already plain data, so it needs no
|
|
6
|
+
* `encode`.
|
|
7
|
+
*/
|
|
8
|
+
export declare const codecOf: <Raw, Value>(decode: (raw: unknown) => Result.Result<Value, unknown>, expected: string) => StandardSchema<Raw, Value>;
|
|
9
|
+
//# sourceMappingURL=codec.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codec.d.ts","sourceRoot":"","sources":["../../src/internal/codec.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAA;AAChE,OAAO,KAAK,KAAK,MAAM,MAAM,wBAAwB,CAAA;AAErD;;;;GAIG;AACH,eAAO,MAAM,OAAO,GAAI,GAAG,EAAE,KAAK,UACxB,CAAC,GAAG,EAAE,OAAO,KAAK,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,YAC7C,MAAM,KACf,cAAc,CAAC,GAAG,EAAE,KAAK,CAS1B,CAAA"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The codec of one math type, from its decode: a Standard Schema whose saved
|
|
3
|
+
* form is the raw shape. The value is already plain data, so it needs no
|
|
4
|
+
* `encode`.
|
|
5
|
+
*/
|
|
6
|
+
export const codecOf = (decode, expected) => ({
|
|
7
|
+
"~standard": {
|
|
8
|
+
version: 1,
|
|
9
|
+
vendor: "ritmo-math",
|
|
10
|
+
validate: (raw) => {
|
|
11
|
+
const value = decode(raw);
|
|
12
|
+
return value.ok ? { value: value.value } : { issues: [{ message: `Expected ${expected}` }] };
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
});
|
|
16
|
+
//# sourceMappingURL=codec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codec.js","sourceRoot":"","sources":["../../src/internal/codec.ts"],"names":[],"mappings":"AAGA;;;;GAIG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG,CACrB,MAAuD,EACvD,QAAgB,EACY,EAAE,CAAC,CAAC;IAChC,WAAW,EAAE;QACX,OAAO,EAAE,CAAC;QACV,MAAM,EAAE,YAAY;QACpB,QAAQ,EAAE,CAAC,GAAG,EAAE,EAAE;YAChB,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAA;YACzB,OAAO,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,YAAY,QAAQ,EAAE,EAAE,CAAC,EAAE,CAAA;QAC9F,CAAC;KACF;CACF,CAAC,CAAA"}
|
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
import * as Brand from "@typeonce/ritmo/Brand";
|
|
2
1
|
import * as Result from "@typeonce/ritmo/Result";
|
|
3
2
|
import type * as Scalar from "../Scalar.ts";
|
|
4
|
-
export declare const Finite:
|
|
5
|
-
export declare const NonNegative:
|
|
6
|
-
export declare const Positive:
|
|
3
|
+
export declare const Finite: Scalar.Constructor<Scalar.Finite>;
|
|
4
|
+
export declare const NonNegative: Scalar.Constructor<Scalar.NonNegative>;
|
|
5
|
+
export declare const Positive: Scalar.Constructor<Scalar.Positive>;
|
|
7
6
|
export declare const clamp: (value: number, min: number, max: number) => Scalar.Finite;
|
|
8
7
|
export declare const lerp: (start: number, end: number, amount: number) => Scalar.Finite;
|
|
9
8
|
export declare const approach: (current: Scalar.Finite, target: Scalar.Finite, maxDelta: Scalar.NonNegative) => Scalar.Finite;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scalar.d.ts","sourceRoot":"","sources":["../../src/internal/scalar.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"scalar.d.ts","sourceRoot":"","sources":["../../src/internal/scalar.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,wBAAwB,CAAA;AAChD,OAAO,KAAK,KAAK,MAAM,MAAM,cAAc,CAAA;AAiB3C,eAAO,MAAM,MAAM,mCAQlB,CAAA;AAED,eAAO,MAAM,WAAW,wCAYQ,CAAA;AAEhC,eAAO,MAAM,QAAQ,qCAYQ,CAAA;AAE7B,eAAO,MAAM,KAAK,UAAW,MAAM,OAAO,MAAM,OAAO,MAAM,KAAG,MAAM,CAAC,MACjB,CAAA;AAEtD,eAAO,MAAM,IAAI,UAAW,MAAM,OAAO,MAAM,UAAU,MAAM,KAAG,MAAM,CAAC,MACtB,CAAA;AAEnD,eAAO,MAAM,QAAQ,YACV,MAAM,CAAC,MAAM,UACd,MAAM,CAAC,MAAM,YACX,MAAM,CAAC,WAAW,KAC3B,MAAM,CAAC,MAMT,CAAA;AAED,eAAO,MAAM,WAAW,UACf,MAAM,OACR,MAAM,SACJ,MAAM,KACZ,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,kBAAkB,CAUxD,CAAA;AAED,eAAO,MAAM,KAAK,UACT,MAAM,cACD,MAAM,YACR,MAAM,eACH,MAAM,aACR,MAAM,KAChB,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,kBAAkB,CAOxD,CAAA"}
|
package/dist/internal/scalar.js
CHANGED
|
@@ -1,13 +1,23 @@
|
|
|
1
|
-
import * as Brand from "@typeonce/ritmo/Brand";
|
|
2
1
|
import * as Result from "@typeonce/ritmo/Result";
|
|
3
|
-
|
|
2
|
+
import { codecOf } from "./codec.js";
|
|
3
|
+
// A branded number's constructors, guard, and codec, from its check.
|
|
4
|
+
const refine = (validate, expected) => ({
|
|
5
|
+
result: validate,
|
|
6
|
+
option: (raw) => {
|
|
7
|
+
const result = validate(raw);
|
|
8
|
+
return result.ok ? result.value : null;
|
|
9
|
+
},
|
|
10
|
+
is: (raw) => typeof raw === "number" && validate(raw).ok,
|
|
11
|
+
codec: codecOf((raw) => typeof raw === "number" ? validate(raw) : Result.failure(raw), expected)
|
|
12
|
+
});
|
|
13
|
+
export const Finite = refine((value) => Number.isFinite(value)
|
|
4
14
|
? Result.success(value)
|
|
5
15
|
: Result.failure({
|
|
6
16
|
tag: "Scalar/NotFinite",
|
|
7
17
|
value
|
|
8
|
-
}));
|
|
9
|
-
const
|
|
10
|
-
const finite =
|
|
18
|
+
}), "a finite number");
|
|
19
|
+
export const NonNegative = refine((value) => {
|
|
20
|
+
const finite = Finite.result(value);
|
|
11
21
|
if (!finite.ok) {
|
|
12
22
|
return finite;
|
|
13
23
|
}
|
|
@@ -17,9 +27,9 @@ const nonNegativeBrand = Brand.refine((value) => {
|
|
|
17
27
|
tag: "Scalar/Negative",
|
|
18
28
|
value
|
|
19
29
|
});
|
|
20
|
-
});
|
|
21
|
-
const
|
|
22
|
-
const finite =
|
|
30
|
+
}, "a finite number, 0 or more");
|
|
31
|
+
export const Positive = refine((value) => {
|
|
32
|
+
const finite = Finite.result(value);
|
|
23
33
|
if (!finite.ok) {
|
|
24
34
|
return finite;
|
|
25
35
|
}
|
|
@@ -29,10 +39,7 @@ const positiveBrand = Brand.refine((value) => {
|
|
|
29
39
|
tag: "Scalar/NonPositive",
|
|
30
40
|
value
|
|
31
41
|
});
|
|
32
|
-
});
|
|
33
|
-
export const Finite = finiteBrand;
|
|
34
|
-
export const NonNegative = nonNegativeBrand;
|
|
35
|
-
export const Positive = positiveBrand;
|
|
42
|
+
}, "a finite number above 0");
|
|
36
43
|
export const clamp = (value, min, max) => Math.min(Math.max(value, min), max);
|
|
37
44
|
export const lerp = (start, end, amount) => (start + (end - start) * amount);
|
|
38
45
|
export const approach = (current, target, maxDelta) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scalar.js","sourceRoot":"","sources":["../../src/internal/scalar.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"scalar.js","sourceRoot":"","sources":["../../src/internal/scalar.ts"],"names":[],"mappings":"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"}
|
package/dist/internal/size2.d.ts
CHANGED
|
@@ -3,7 +3,7 @@ import * as Scalar from "../Scalar.ts";
|
|
|
3
3
|
import type * as Size2 from "../Size2.ts";
|
|
4
4
|
export declare const result: (raw: Size2.Raw) => Result.Result<Size2.Size2, Size2.Error>;
|
|
5
5
|
export declare const option: (raw: Size2.Raw) => Size2.Size2 | null;
|
|
6
|
-
export declare const is: (raw:
|
|
6
|
+
export declare const is: (raw: unknown) => raw is Size2.Size2;
|
|
7
7
|
export declare const toRaw: (size: Size2.Size2) => Size2.Raw;
|
|
8
8
|
export declare const width: (size: Size2.Size2) => Scalar.NonNegative;
|
|
9
9
|
export declare const height: (size: Size2.Size2) => Scalar.NonNegative;
|
|
@@ -11,5 +11,12 @@ export declare const height: (size: Size2.Size2) => Scalar.NonNegative;
|
|
|
11
11
|
* Shape check for untrusted input; values are validated by `result`.
|
|
12
12
|
*/
|
|
13
13
|
export declare const isRawShape: (raw: unknown) => raw is Size2.Raw;
|
|
14
|
-
|
|
14
|
+
/** Untrusted input without the raw shape. */
|
|
15
|
+
type Malformed = {
|
|
16
|
+
readonly tag: "Size2/Malformed";
|
|
17
|
+
readonly input: unknown;
|
|
18
|
+
};
|
|
19
|
+
export declare const decode: (raw: unknown) => Result.Result<Size2.Size2, Size2.Error | Malformed>;
|
|
20
|
+
export declare const codec: import("@typeonce/ritmo/Descriptor").StandardSchema<Size2.Raw, Size2.Size2>;
|
|
21
|
+
export {};
|
|
15
22
|
//# sourceMappingURL=size2.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"size2.d.ts","sourceRoot":"","sources":["../../src/internal/size2.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"size2.d.ts","sourceRoot":"","sources":["../../src/internal/size2.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,MAAM,wBAAwB,CAAA;AAChD,OAAO,KAAK,MAAM,MAAM,cAAc,CAAA;AACtC,OAAO,KAAK,KAAK,KAAK,MAAM,aAAa,CAAA;AAKzC,eAAO,MAAM,MAAM,QAAS,KAAK,CAAC,GAAG,KAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAgB7E,CAAA;AAED,eAAO,MAAM,MAAM,QAAS,KAAK,CAAC,GAAG,KAAG,KAAK,CAAC,KAAK,GAAG,IAGrD,CAAA;AAED,eAAO,MAAM,EAAE,QAAS,OAAO,KAAG,GAAG,IAAI,KAAK,CAAC,KAAuB,CAAA;AAEtE,eAAO,MAAM,KAAK,SAAU,KAAK,CAAC,KAAK,KAAG,KAAK,CAAC,GAG9C,CAAA;AAEF,eAAO,MAAM,KAAK,SAAU,KAAK,CAAC,KAAK,KAAG,MAAM,CAAC,WAAyB,CAAA;AAC1E,eAAO,MAAM,MAAM,SAAU,KAAK,CAAC,KAAK,KAAG,MAAM,CAAC,WAA0B,CAAA;AAE5E;;GAEG;AACH,eAAO,MAAM,UAAU,QAAS,OAAO,KAAG,GAAG,IAAI,KAAK,CAAC,GACqH,CAAA;AAE5K,6CAA6C;AAC7C,KAAK,SAAS,GAAG;IAAE,QAAQ,CAAC,GAAG,EAAE,iBAAiB,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAA;CAAE,CAAA;AAE7E,eAAO,MAAM,MAAM,QAAS,OAAO,KAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,GAAG,SAAS,CACA,CAAA;AAExF,eAAO,MAAM,KAAK,6EAAqG,CAAA"}
|
package/dist/internal/size2.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { codecOf } from "./codec.js";
|
|
1
2
|
import * as Result from "@typeonce/ritmo/Result";
|
|
2
3
|
import * as Scalar from "../Scalar.js";
|
|
3
4
|
const make = (width, height) => ({ width, height });
|
|
@@ -21,7 +22,7 @@ export const option = (raw) => {
|
|
|
21
22
|
const next = result(raw);
|
|
22
23
|
return next.ok ? next.value : null;
|
|
23
24
|
};
|
|
24
|
-
export const is = (raw) =>
|
|
25
|
+
export const is = (raw) => decode(raw).ok;
|
|
25
26
|
export const toRaw = (size) => ({
|
|
26
27
|
width: size.width,
|
|
27
28
|
height: size.height
|
|
@@ -33,4 +34,5 @@ export const height = (size) => size.height;
|
|
|
33
34
|
*/
|
|
34
35
|
export const isRawShape = (raw) => typeof raw === "object" && raw !== null && typeof raw["width"] === "number" && typeof raw["height"] === "number";
|
|
35
36
|
export const decode = (raw) => isRawShape(raw) ? result(raw) : Result.failure({ tag: "Size2/Malformed", input: raw });
|
|
37
|
+
export const codec = codecOf(decode, "a size { width, height } of non-negative finite numbers");
|
|
36
38
|
//# sourceMappingURL=size2.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"size2.js","sourceRoot":"","sources":["../../src/internal/size2.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,wBAAwB,CAAA;AAChD,OAAO,KAAK,MAAM,MAAM,cAAc,CAAA;AAGtC,MAAM,IAAI,GAAG,CAAC,KAAyB,EAAE,MAA0B,EAAe,EAAE,CAClF,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAgB,CAAA;AAEpC,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,GAAc,EAA2C,EAAE;IAChF,MAAM,KAAK,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;IAClD,MAAM,MAAM,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;IACpD,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;QAC5B,OAAO,MAAM,CAAC,OAAO,CAAC;YACpB,GAAG,EAAE,eAAe;YACpB,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK;YACpC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK;YACvC,KAAK,EAAE;gBACL,KAAK,EAAE,GAAG,CAAC,KAAK;gBAChB,MAAM,EAAE,GAAG,CAAC,MAAM;aACnB;SACF,CAAC,CAAA;IACJ,CAAC;IAED,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA;AACxD,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,GAAc,EAAsB,EAAE;IAC3D,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,CAAA;IACxB,OAAO,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAA;AACpC,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,
|
|
1
|
+
{"version":3,"file":"size2.js","sourceRoot":"","sources":["../../src/internal/size2.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AACpC,OAAO,KAAK,MAAM,MAAM,wBAAwB,CAAA;AAChD,OAAO,KAAK,MAAM,MAAM,cAAc,CAAA;AAGtC,MAAM,IAAI,GAAG,CAAC,KAAyB,EAAE,MAA0B,EAAe,EAAE,CAClF,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAgB,CAAA;AAEpC,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,GAAc,EAA2C,EAAE;IAChF,MAAM,KAAK,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;IAClD,MAAM,MAAM,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;IACpD,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;QAC5B,OAAO,MAAM,CAAC,OAAO,CAAC;YACpB,GAAG,EAAE,eAAe;YACpB,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK;YACpC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK;YACvC,KAAK,EAAE;gBACL,KAAK,EAAE,GAAG,CAAC,KAAK;gBAChB,MAAM,EAAE,GAAG,CAAC,MAAM;aACnB;SACF,CAAC,CAAA;IACJ,CAAC;IAED,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA;AACxD,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,GAAc,EAAsB,EAAE;IAC3D,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,CAAA;IACxB,OAAO,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAA;AACpC,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAY,EAAsB,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAA;AAEtE,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,IAAiB,EAAa,EAAE,CAAC,CAAC;IACtD,KAAK,EAAE,IAAI,CAAC,KAAK;IACjB,MAAM,EAAE,IAAI,CAAC,MAAM;CACpB,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,IAAiB,EAAsB,EAAE,CAAC,IAAI,CAAC,KAAK,CAAA;AAC1E,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,IAAiB,EAAsB,EAAE,CAAC,IAAI,CAAC,MAAM,CAAA;AAE5E;;GAEG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,GAAY,EAAoB,EAAE,CAC3D,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,IAAI,OAAQ,GAA+B,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,OAAQ,GAA+B,CAAC,QAAQ,CAAC,KAAK,QAAQ,CAAA;AAK5K,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,GAAY,EAAuD,EAAE,CAC1F,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,iBAAiB,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAA;AAExF,MAAM,CAAC,MAAM,KAAK,GAAG,OAAO,CAAyB,MAAM,EAAE,yDAAyD,CAAC,CAAA"}
|
|
@@ -3,7 +3,7 @@ import * as Scalar from "../Scalar.ts";
|
|
|
3
3
|
import type * as Vector2 from "../Vector2.ts";
|
|
4
4
|
export declare const result: (raw: Vector2.Raw) => Result.Result<Vector2.Vector2, Vector2.Error>;
|
|
5
5
|
export declare const option: (raw: Vector2.Raw) => Vector2.Vector2 | null;
|
|
6
|
-
export declare const is: (raw:
|
|
6
|
+
export declare const is: (raw: unknown) => raw is Vector2.Vector2;
|
|
7
7
|
export declare const toRaw: (vector: Vector2.Vector2) => Vector2.Raw;
|
|
8
8
|
export declare const components: (vector: Vector2.Vector2) => {
|
|
9
9
|
x: Scalar.Finite;
|
|
@@ -28,5 +28,12 @@ export declare const normalizeXYOrZero: (x: number, y: number) => {
|
|
|
28
28
|
* Shape check for untrusted input; values are validated by `result`.
|
|
29
29
|
*/
|
|
30
30
|
export declare const isRawShape: (raw: unknown) => raw is Vector2.Raw;
|
|
31
|
-
|
|
31
|
+
/** Untrusted input without the raw shape. */
|
|
32
|
+
type Malformed = {
|
|
33
|
+
readonly tag: "Vector2/Malformed";
|
|
34
|
+
readonly input: unknown;
|
|
35
|
+
};
|
|
36
|
+
export declare const decode: (raw: unknown) => Result.Result<Vector2.Vector2, Vector2.Error | Malformed>;
|
|
37
|
+
export declare const codec: import("@typeonce/ritmo/Descriptor").StandardSchema<Vector2.Raw, Vector2.Vector2>;
|
|
38
|
+
export {};
|
|
32
39
|
//# sourceMappingURL=vector2.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vector2.d.ts","sourceRoot":"","sources":["../../src/internal/vector2.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"vector2.d.ts","sourceRoot":"","sources":["../../src/internal/vector2.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,MAAM,wBAAwB,CAAA;AAChD,OAAO,KAAK,MAAM,MAAM,cAAc,CAAA;AACtC,OAAO,KAAK,KAAK,OAAO,MAAM,eAAe,CAAA;AAK7C,eAAO,MAAM,MAAM,QAAS,OAAO,CAAC,GAAG,KAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,CAgBrF,CAAA;AAED,eAAO,MAAM,MAAM,QAAS,OAAO,CAAC,GAAG,KAAG,OAAO,CAAC,OAAO,GAAG,IAG3D,CAAA;AAED,eAAO,MAAM,EAAE,QAAS,OAAO,KAAG,GAAG,IAAI,OAAO,CAAC,OAAyB,CAAA;AAE1E,eAAO,MAAM,KAAK,WAAY,OAAO,CAAC,OAAO,KAAG,OAAO,CAAC,GAGtD,CAAA;AAEF,eAAO,MAAM,UAAU,WAAY,OAAO,CAAC,OAAO;IAChD,CAAC;IACD,CAAC;CACD,CAAA;AAEF,eAAO,MAAM,CAAC,WAAY,OAAO,CAAC,OAAO,KAAG,MAAM,CAAC,MAAkB,CAAA;AACrE,eAAO,MAAM,CAAC,WAAY,OAAO,CAAC,OAAO,KAAG,MAAM,CAAC,MAAkB,CAAA;AAErE,eAAO,MAAM,IAAI,QAAO,OAAO,CAAC,OAAuD,CAAA;AAEvF,eAAO,MAAM,GAAG,SAAU,OAAO,CAAC,OAAO,SAAS,OAAO,CAAC,OAAO,KAAG,OAAO,CAAC,OACI,CAAA;AAEhF,eAAO,MAAM,QAAQ,SAAU,OAAO,CAAC,OAAO,SAAS,OAAO,CAAC,OAAO,KAAG,OAAO,CAAC,OACD,CAAA;AAEhF,eAAO,MAAM,KAAK,WAAY,OAAO,CAAC,OAAO,UAAU,MAAM,CAAC,MAAM,KAAG,OAAO,CAAC,OACG,CAAA;AAElF,eAAO,MAAM,aAAa,WAAY,OAAO,CAAC,OAAO,KAAG,MAAM,CAAC,WACI,CAAA;AAEnE,eAAO,MAAM,MAAM,WAAY,OAAO,CAAC,OAAO,KAAG,MAAM,CAAC,WACA,CAAA;AAExD,eAAO,MAAM,SAAS,WACZ,OAAO,CAAC,OAAO,KACtB,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,cAAc,CAevD,CAAA;AAED,eAAO,MAAM,eAAe,WAAY,OAAO,CAAC,OAAO,KAAG,OAAO,CAAC,OAGjE,CAAA;AAED,eAAO,MAAM,iBAAiB,MAAO,MAAM,KAAK,MAAM,KAAG;IACvD,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAA;IAClB,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAA;IAClB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAgBxB,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,UAAU,QAAS,OAAO,KAAG,GAAG,IAAI,OAAO,CAAC,GAC0G,CAAA;AAEnK,6CAA6C;AAC7C,KAAK,SAAS,GAAG;IAAE,QAAQ,CAAC,GAAG,EAAE,mBAAmB,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAA;CAAE,CAAA;AAE/E,eAAO,MAAM,MAAM,QAAS,OAAO,KAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,GAAG,SAAS,CACJ,CAAA;AAE1F,eAAO,MAAM,KAAK,mFAAuF,CAAA"}
|
package/dist/internal/vector2.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { codecOf } from "./codec.js";
|
|
1
2
|
import * as Result from "@typeonce/ritmo/Result";
|
|
2
3
|
import * as Scalar from "../Scalar.js";
|
|
3
4
|
import * as Ops from "../Ops.js";
|
|
@@ -22,7 +23,7 @@ export const option = (raw) => {
|
|
|
22
23
|
const next = result(raw);
|
|
23
24
|
return next.ok ? next.value : null;
|
|
24
25
|
};
|
|
25
|
-
export const is = (raw) =>
|
|
26
|
+
export const is = (raw) => decode(raw).ok;
|
|
26
27
|
export const toRaw = (vector) => ({
|
|
27
28
|
x: vector.x,
|
|
28
29
|
y: vector.y
|
|
@@ -73,4 +74,5 @@ export const normalizeXYOrZero = (x, y) => {
|
|
|
73
74
|
*/
|
|
74
75
|
export const isRawShape = (raw) => typeof raw === "object" && raw !== null && typeof raw["x"] === "number" && typeof raw["y"] === "number";
|
|
75
76
|
export const decode = (raw) => isRawShape(raw) ? result(raw) : Result.failure({ tag: "Vector2/Malformed", input: raw });
|
|
77
|
+
export const codec = codecOf(decode, "a vector { x, y } of finite numbers");
|
|
76
78
|
//# sourceMappingURL=vector2.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vector2.js","sourceRoot":"","sources":["../../src/internal/vector2.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,wBAAwB,CAAA;AAChD,OAAO,KAAK,MAAM,MAAM,cAAc,CAAA;AAEtC,OAAO,KAAK,GAAG,MAAM,WAAW,CAAA;AAEhC,MAAM,IAAI,GAAG,CAAC,CAAgB,EAAE,CAAgB,EAAmB,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAoB,CAAA;AAEnG,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,GAAgB,EAAiD,EAAE;IACxF,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;IACrC,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;IACrC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QACnB,OAAO,MAAM,CAAC,OAAO,CAAC;YACpB,GAAG,EAAE,iBAAiB;YACtB,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK;YACxB,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK;YACxB,KAAK,EAAE;gBACL,CAAC,EAAE,GAAG,CAAC,CAAC;gBACR,CAAC,EAAE,GAAG,CAAC,CAAC;aACT;SACF,CAAC,CAAA;IACJ,CAAC;IAED,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAA;AAC/C,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,GAAgB,EAA0B,EAAE;IACjE,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,CAAA;IACxB,OAAO,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAA;AACpC,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,
|
|
1
|
+
{"version":3,"file":"vector2.js","sourceRoot":"","sources":["../../src/internal/vector2.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@typeonce/ritmo-math",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.14.0",
|
|
4
4
|
"description": "Validated math values and hot-path game helpers (collision, spatial grid, flow field, random) for Ritmo games",
|
|
5
5
|
"author": "Sandro Maglione",
|
|
6
6
|
"license": "MIT",
|
|
@@ -47,7 +47,7 @@
|
|
|
47
47
|
"provenance": true
|
|
48
48
|
},
|
|
49
49
|
"dependencies": {
|
|
50
|
-
"@typeonce/ritmo": "^0.
|
|
50
|
+
"@typeonce/ritmo": "^0.14.0"
|
|
51
51
|
},
|
|
52
52
|
"engines": {
|
|
53
53
|
"node": ">=20"
|
package/src/Aabb.ts
CHANGED
|
@@ -35,6 +35,7 @@
|
|
|
35
35
|
* Immutable geometry helpers for translation and overlap checks.
|
|
36
36
|
*/
|
|
37
37
|
import type * as Brand from "@typeonce/ritmo/Brand"
|
|
38
|
+
import type { StandardSchema } from "@typeonce/ritmo/Descriptor"
|
|
38
39
|
import * as internal from "./internal/aabb.ts"
|
|
39
40
|
import type * as Result from "@typeonce/ritmo/Result"
|
|
40
41
|
import type * as Scalar from "./Scalar.ts"
|
|
@@ -70,16 +71,6 @@ export type Error =
|
|
|
70
71
|
| { readonly tag: "Aabb/InvalidPosition"; readonly error: Vector2.Error; readonly input: Raw }
|
|
71
72
|
| { readonly tag: "Aabb/InvalidSize"; readonly error: Size2.Error; readonly input: Raw }
|
|
72
73
|
|
|
73
|
-
/**
|
|
74
|
-
* Failure produced by `decode` when the input does not have the raw shape.
|
|
75
|
-
*
|
|
76
|
-
* @category AABB Types
|
|
77
|
-
*/
|
|
78
|
-
export type DecodeError = {
|
|
79
|
-
readonly tag: "Aabb/Malformed"
|
|
80
|
-
readonly input: unknown
|
|
81
|
-
}
|
|
82
|
-
|
|
83
74
|
/**
|
|
84
75
|
* Validates one raw AABB and returns an explicit result.
|
|
85
76
|
*
|
|
@@ -95,13 +86,20 @@ export type DecodeError = {
|
|
|
95
86
|
*/
|
|
96
87
|
export const result: (raw: Raw) => Result.Result<Aabb, Error> = internal.result
|
|
97
88
|
/**
|
|
98
|
-
*
|
|
99
|
-
*
|
|
100
|
-
*
|
|
89
|
+
* The codec of `Aabb` (a Standard Schema, see `Descriptor.Codec`): give it to
|
|
90
|
+
* `Descriptor.ConstructedComponent(...)` so raw input and saves are validated.
|
|
91
|
+
* Its saved form is the raw shape, so it needs no `encode`. To put a `Aabb`
|
|
92
|
+
* inside your own object schema, use {@link is} with your library's guard
|
|
93
|
+
* schema (`Schema.declare`, `z.custom`).
|
|
94
|
+
*
|
|
95
|
+
* @example
|
|
96
|
+
* ```ts
|
|
97
|
+
* const Position = Descriptor.ConstructedComponent(Aabb.codec)("Game/Position")
|
|
98
|
+
* ```
|
|
101
99
|
*
|
|
102
100
|
* @category Construction
|
|
103
101
|
*/
|
|
104
|
-
export const
|
|
102
|
+
export const codec: StandardSchema<Raw, Aabb> = internal.codec
|
|
105
103
|
/**
|
|
106
104
|
* Validates one raw AABB and returns `null` on failure.
|
|
107
105
|
*
|
|
@@ -109,11 +107,12 @@ export const decode: (raw: unknown) => Result.Result<Aabb, Error | DecodeError>
|
|
|
109
107
|
*/
|
|
110
108
|
export const option: (raw: Raw) => Aabb | null = internal.option
|
|
111
109
|
/**
|
|
112
|
-
*
|
|
110
|
+
* Whether any value is a valid `Aabb`: a guard, also for building a
|
|
111
|
+
* `Aabb` field in your own schema (`Schema.declare(Aabb.is)`).
|
|
113
112
|
*
|
|
114
113
|
* @category Construction
|
|
115
114
|
*/
|
|
116
|
-
export const is: (raw:
|
|
115
|
+
export const is: (raw: unknown) => raw is Aabb = internal.is
|
|
117
116
|
/**
|
|
118
117
|
* Reads the center position of one AABB.
|
|
119
118
|
*
|