@typeonce/ritmo-math 0.12.0 → 0.13.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.
Files changed (56) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/README.md +1 -1
  3. package/dist/Aabb.d.ts +15 -15
  4. package/dist/Aabb.d.ts.map +1 -1
  5. package/dist/Aabb.js +13 -5
  6. package/dist/Aabb.js.map +1 -1
  7. package/dist/Random.d.ts +16 -6
  8. package/dist/Random.d.ts.map +1 -1
  9. package/dist/Random.js +13 -3
  10. package/dist/Random.js.map +1 -1
  11. package/dist/Scalar.d.ts +26 -7
  12. package/dist/Scalar.d.ts.map +1 -1
  13. package/dist/Scalar.js +6 -3
  14. package/dist/Scalar.js.map +1 -1
  15. package/dist/Size2.d.ts +15 -15
  16. package/dist/Size2.d.ts.map +1 -1
  17. package/dist/Size2.js +13 -5
  18. package/dist/Size2.js.map +1 -1
  19. package/dist/Vector2.d.ts +15 -15
  20. package/dist/Vector2.d.ts.map +1 -1
  21. package/dist/Vector2.js +13 -5
  22. package/dist/Vector2.js.map +1 -1
  23. package/dist/index.d.ts +3 -3
  24. package/dist/index.js +3 -3
  25. package/dist/internal/aabb.d.ts +9 -2
  26. package/dist/internal/aabb.d.ts.map +1 -1
  27. package/dist/internal/aabb.js +3 -1
  28. package/dist/internal/aabb.js.map +1 -1
  29. package/dist/internal/codec.d.ts +9 -0
  30. package/dist/internal/codec.d.ts.map +1 -0
  31. package/dist/internal/codec.js +16 -0
  32. package/dist/internal/codec.js.map +1 -0
  33. package/dist/internal/scalar.d.ts +3 -4
  34. package/dist/internal/scalar.d.ts.map +1 -1
  35. package/dist/internal/scalar.js +19 -12
  36. package/dist/internal/scalar.js.map +1 -1
  37. package/dist/internal/size2.d.ts +9 -2
  38. package/dist/internal/size2.d.ts.map +1 -1
  39. package/dist/internal/size2.js +3 -1
  40. package/dist/internal/size2.js.map +1 -1
  41. package/dist/internal/vector2.d.ts +9 -2
  42. package/dist/internal/vector2.d.ts.map +1 -1
  43. package/dist/internal/vector2.js +3 -1
  44. package/dist/internal/vector2.js.map +1 -1
  45. package/package.json +2 -2
  46. package/src/Aabb.ts +15 -16
  47. package/src/Random.ts +21 -7
  48. package/src/Scalar.ts +27 -7
  49. package/src/Size2.ts +15 -16
  50. package/src/Vector2.ts +15 -16
  51. package/src/index.ts +3 -3
  52. package/src/internal/aabb.ts +8 -2
  53. package/src/internal/codec.ts +21 -0
  54. package/src/internal/scalar.ts +24 -13
  55. package/src/internal/size2.ts +8 -2
  56. package/src/internal/vector2.ts +8 -2
package/CHANGELOG.md CHANGED
@@ -1,5 +1,20 @@
1
1
  # @typeonce/ritmo-math
2
2
 
3
+ ## 0.13.0
4
+
5
+ ### Minor Changes
6
+
7
+ - 835f6ba: **Each validated type has one `codec`, a Standard Schema, and a guard `is` that takes `unknown`.** `Vector2.codec`, `Size2.codec`, `Aabb.codec`, `Random.codec`, and `Scalar.Finite.codec` / `NonNegative.codec` / `Positive.codec` go straight into `Descriptor.ConstructedComponent(...)` or `ConstructedResource(...)`; inside a game's own schema, build the field from `is` (`Schema.declare(Vector2.is)`, `z.custom(Vector2.is)`). The scalar constructors are typed `Scalar.Constructor<T>`, which replaces `Brand.Constructor`.
8
+
9
+ - **Breaking: `Vector2.decode`, `Size2.decode`, `Aabb.decode`, `Random.decode`, and their `DecodeError` are removed.** `Descriptor.ConstructedComponent(Vector2)` becomes `Descriptor.ConstructedComponent(Vector2.codec)`; to check a value, use `Vector2.is(raw)` or `Vector2.result(raw)`, which stay.
10
+
11
+ ### Patch Changes
12
+
13
+ - Updated dependencies [791b52a]
14
+ - Updated dependencies [b3d6502]
15
+ - Updated dependencies [835f6ba]
16
+ - @typeonce/ritmo@0.13.0
17
+
3
18
  ## 0.12.0
4
19
 
5
20
  ### Patch Changes
package/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  Math for ritmo games, in two kinds:
4
4
 
5
- - **Validated values**: `Scalar`, `Vector2`, `Size2`, `Aabb`, and `InputAxis`. Every one exports constructors that validate untrusted input, so they work as `Descriptor.ConstructedComponent(...)` constructors and survive snapshot restore.
5
+ - **Validated values**: `Scalar` (`Finite`, `NonNegative`, `Positive`), `Vector2`, `Size2`, and `Aabb`. Each has constructors that validate input (`result`, `option`), a guard `is`, and one `codec`, a Standard Schema: `Descriptor.ConstructedComponent(Vector2.codec)` saves the value and checks it on restore. Inside a game's own schema, build the field from the guard (`Schema.declare(Vector2.is)` in Effect, `z.custom(Vector2.is)` in Zod). `Random.codec` does the same for a generator kept in a resource.
6
6
  - **Hot-path helpers** on plain numbers, for code that runs every step: `Vec2` vector arithmetic (validated `Vector2` values pass straight in), `Box2` edge boxes, `Collide2` swept circle collision that slides along walls and never tunnels through them, a `SpatialGrid` broad phase that allocates nothing per step, a `FlowField` that leads bodies around walls, a deterministic `Random` whose whole state is one integer (keep it in a resource, so runs replay), and `Ops`, math functions that return the same bits on every engine.
7
7
 
8
8
  ```ts
package/dist/Aabb.d.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 type * as Result from "@typeonce/ritmo/Result";
39
40
  import type * as Scalar from "./Scalar.ts";
40
41
  import type * as Size2 from "./Size2.ts";
@@ -71,15 +72,6 @@ export type Error = {
71
72
  readonly error: Size2.Error;
72
73
  readonly input: Raw;
73
74
  };
74
- /**
75
- * Failure produced by `decode` when the input does not have the raw shape.
76
- *
77
- * @category AABB Types
78
- */
79
- export type DecodeError = {
80
- readonly tag: "Aabb/Malformed";
81
- readonly input: unknown;
82
- };
83
75
  /**
84
76
  * Validates one raw AABB and returns an explicit result.
85
77
  *
@@ -95,13 +87,20 @@ export type DecodeError = {
95
87
  */
96
88
  export declare const result: (raw: Raw) => Result.Result<Aabb, Error>;
97
89
  /**
98
- * Validates untrusted input of any shape, for example a value read from a
99
- * save file. Descriptors built from this module use it when restoring
100
- * snapshots.
90
+ * The codec of `Aabb` (a Standard Schema, see `Descriptor.Codec`): give it to
91
+ * `Descriptor.ConstructedComponent(...)` so raw input and saves are validated.
92
+ * Its saved form is the raw shape, so it needs no `encode`. To put a `Aabb`
93
+ * inside your own object schema, use {@link is} with your library's guard
94
+ * schema (`Schema.declare`, `z.custom`).
95
+ *
96
+ * @example
97
+ * ```ts
98
+ * const Position = Descriptor.ConstructedComponent(Aabb.codec)("Game/Position")
99
+ * ```
101
100
  *
102
101
  * @category Construction
103
102
  */
104
- export declare const decode: (raw: unknown) => Result.Result<Aabb, Error | DecodeError>;
103
+ export declare const codec: StandardSchema<Raw, Aabb>;
105
104
  /**
106
105
  * Validates one raw AABB and returns `null` on failure.
107
106
  *
@@ -109,11 +108,12 @@ export declare const decode: (raw: unknown) => Result.Result<Aabb, Error | Decod
109
108
  */
110
109
  export declare const option: (raw: Raw) => Aabb | null;
111
110
  /**
112
- * Checks whether one raw value already satisfies the AABB invariants.
111
+ * Whether any value is a valid `Aabb`: a guard, also for building a
112
+ * `Aabb` field in your own schema (`Schema.declare(Aabb.is)`).
113
113
  *
114
114
  * @category Construction
115
115
  */
116
- export declare const is: (raw: Raw) => raw is Raw & Aabb;
116
+ export declare const is: (raw: unknown) => raw is Aabb;
117
117
  /**
118
118
  * Reads the center position of one AABB.
119
119
  *
@@ -1 +1 @@
1
- {"version":3,"file":"Aabb.d.ts","sourceRoot":"","sources":["../src/Aabb.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Aabb.d.ts","sourceRoot":"","sources":["../src/Aabb.ts"],"names":[],"mappings":"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"}
package/dist/Aabb.js CHANGED
@@ -14,13 +14,20 @@ import * as internal from "./internal/aabb.js";
14
14
  */
15
15
  export const result = internal.result;
16
16
  /**
17
- * Validates untrusted input of any shape, for example a value read from a
18
- * save file. Descriptors built from this module use it when restoring
19
- * snapshots.
17
+ * The codec of `Aabb` (a Standard Schema, see `Descriptor.Codec`): give it to
18
+ * `Descriptor.ConstructedComponent(...)` so raw input and saves are validated.
19
+ * Its saved form is the raw shape, so it needs no `encode`. To put a `Aabb`
20
+ * inside your own object schema, use {@link is} with your library's guard
21
+ * schema (`Schema.declare`, `z.custom`).
22
+ *
23
+ * @example
24
+ * ```ts
25
+ * const Position = Descriptor.ConstructedComponent(Aabb.codec)("Game/Position")
26
+ * ```
20
27
  *
21
28
  * @category Construction
22
29
  */
23
- export const decode = internal.decode;
30
+ export const codec = internal.codec;
24
31
  /**
25
32
  * Validates one raw AABB and returns `null` on failure.
26
33
  *
@@ -28,7 +35,8 @@ export const decode = internal.decode;
28
35
  */
29
36
  export const option = internal.option;
30
37
  /**
31
- * Checks whether one raw value already satisfies the AABB invariants.
38
+ * Whether any value is a valid `Aabb`: a guard, also for building a
39
+ * `Aabb` field in your own schema (`Schema.declare(Aabb.is)`).
32
40
  *
33
41
  * @category Construction
34
42
  */
package/dist/Aabb.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"Aabb.js","sourceRoot":"","sources":["../src/Aabb.ts"],"names":[],"mappings":"AAqCA,OAAO,KAAK,QAAQ,MAAM,oBAAoB,CAAA;AA6C9C;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,MAAM,MAAM,GAA6C,QAAQ,CAAC,MAAM,CAAA;AAC/E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,MAAM,GAA+D,QAAQ,CAAC,MAAM,CAAA;AACjG;;;;GAIG;AACH,MAAM,CAAC,MAAM,MAAM,GAA8B,QAAQ,CAAC,MAAM,CAAA;AAChE;;;;GAIG;AACH,MAAM,CAAC,MAAM,EAAE,GAAoC,QAAQ,CAAC,EAAE,CAAA;AAC9D;;;;GAIG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAoC,QAAQ,CAAC,QAAQ,CAAA;AAC1E;;;;GAIG;AACH,MAAM,CAAC,MAAM,IAAI,GAAgC,QAAQ,CAAC,IAAI,CAAA;AAC9D;;;;GAIG;AACH,MAAM,CAAC,MAAM,IAAI,GAAkC,QAAQ,CAAC,IAAI,CAAA;AAChE;;;;GAIG;AACH,MAAM,CAAC,MAAM,KAAK,GAAkC,QAAQ,CAAC,KAAK,CAAA;AAClE;;;;GAIG;AACH,MAAM,CAAC,MAAM,GAAG,GAAkC,QAAQ,CAAC,GAAG,CAAA;AAC9D;;;;GAIG;AACH,MAAM,CAAC,MAAM,MAAM,GAAkC,QAAQ,CAAC,MAAM,CAAA;AACpE;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,UAAU,GAA2C,QAAQ,CAAC,UAAU,CAAA;AACrF;;;;GAIG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAA2C,QAAQ,CAAC,oBAAoB,CAAA;AACzG;;;;GAIG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAA2C,QAAQ,CAAC,kBAAkB,CAAA;AACrG;;;;GAIG;AACH,MAAM,CAAC,MAAM,SAAS,GAAiD,QAAQ,CAAC,SAAS,CAAA"}
1
+ {"version":3,"file":"Aabb.js","sourceRoot":"","sources":["../src/Aabb.ts"],"names":[],"mappings":"AAsCA,OAAO,KAAK,QAAQ,MAAM,oBAAoB,CAAA;AAmC9C;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,MAAM,MAAM,GAA6C,QAAQ,CAAC,MAAM,CAAA;AAC/E;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,MAAM,KAAK,GAA8B,QAAQ,CAAC,KAAK,CAAA;AAC9D;;;;GAIG;AACH,MAAM,CAAC,MAAM,MAAM,GAA8B,QAAQ,CAAC,MAAM,CAAA;AAChE;;;;;GAKG;AACH,MAAM,CAAC,MAAM,EAAE,GAAkC,QAAQ,CAAC,EAAE,CAAA;AAC5D;;;;GAIG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAoC,QAAQ,CAAC,QAAQ,CAAA;AAC1E;;;;GAIG;AACH,MAAM,CAAC,MAAM,IAAI,GAAgC,QAAQ,CAAC,IAAI,CAAA;AAC9D;;;;GAIG;AACH,MAAM,CAAC,MAAM,IAAI,GAAkC,QAAQ,CAAC,IAAI,CAAA;AAChE;;;;GAIG;AACH,MAAM,CAAC,MAAM,KAAK,GAAkC,QAAQ,CAAC,KAAK,CAAA;AAClE;;;;GAIG;AACH,MAAM,CAAC,MAAM,GAAG,GAAkC,QAAQ,CAAC,GAAG,CAAA;AAC9D;;;;GAIG;AACH,MAAM,CAAC,MAAM,MAAM,GAAkC,QAAQ,CAAC,MAAM,CAAA;AACpE;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,UAAU,GAA2C,QAAQ,CAAC,UAAU,CAAA;AACrF;;;;GAIG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAA2C,QAAQ,CAAC,oBAAoB,CAAA;AACzG;;;;GAIG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAA2C,QAAQ,CAAC,kBAAkB,CAAA;AACrG;;;;GAIG;AACH,MAAM,CAAC,MAAM,SAAS,GAAiD,QAAQ,CAAC,SAAS,CAAA"}
package/dist/Random.d.ts CHANGED
@@ -3,7 +3,7 @@
3
3
  * integer.
4
4
  *
5
5
  * Keep the state in a resource, so a run replays exactly and saves with the
6
- * world: declare it with this module as its validator, start it with
6
+ * world: declare it with `Random.codec` as its schema, start it with
7
7
  * `seed`, and draw in systems through `draw` over its write cell, which writes
8
8
  * every draw back (rolled back with a failed system). Two generators made
9
9
  * from the same state draw the same sequence on every platform. `make` is for
@@ -11,7 +11,7 @@
11
11
  *
12
12
  * @example
13
13
  * ```ts
14
- * const Rng = Descriptor.ConstructedResource(Random)("Game/Rng")
14
+ * const Rng = Descriptor.ConstructedResource(Random.codec)("Game/Rng")
15
15
  * const runtime = Game.Runtime.make({ services, resources: { Rng: Random.seed(0x5eed) } })
16
16
  *
17
17
  * Game.System("Game/Spawn", { resources: { rng: Game.System.writeResource(Rng) } }, ({ resources }) => {
@@ -35,6 +35,7 @@
35
35
  */
36
36
  import type * as Brand from "@typeonce/ritmo/Brand";
37
37
  import type { WriteCell } from "@typeonce/ritmo/Query";
38
+ import type { StandardSchema } from "@typeonce/ritmo/Descriptor";
38
39
  import * as Result from "@typeonce/ritmo/Result";
39
40
  /**
40
41
  * A generator. Every draw advances `state`.
@@ -72,7 +73,7 @@ export interface Random {
72
73
  export declare const make: (state: number) => Random;
73
74
  /**
74
75
  * A generator's state as a resource holds it: an unsigned 32-bit integer.
75
- * Only `seed`, `result`, and `decode` make one, so `draw` takes the cell of a
76
+ * Only `seed`, `result`, and `codec` make one, so `draw` takes the cell of a
76
77
  * random resource and nothing else.
77
78
  *
78
79
  * @category Resource
@@ -84,17 +85,26 @@ export interface InvalidState {
84
85
  readonly value: unknown;
85
86
  }
86
87
  /**
87
- * Validates a state, for `Descriptor.ConstructedResource(Random)` and saves.
88
+ * Validates a state, for game code that builds one from a number.
88
89
  *
89
90
  * @category Resource
90
91
  */
91
92
  export declare const result: (raw: number) => Result.Result<State, InvalidState>;
92
93
  /**
93
- * Validates a state read from untrusted data (a save).
94
+ * Whether any value is a generator state: a guard, also for building a
95
+ * state field in your own schema (`Schema.declare(Random.is)`).
94
96
  *
95
97
  * @category Resource
96
98
  */
97
- export declare const decode: (raw: unknown) => Result.Result<State, InvalidState>;
99
+ export declare const is: (raw: unknown) => raw is State;
100
+ /**
101
+ * The codec of a random resource's state (a Standard Schema, see
102
+ * `Descriptor.Codec`): `Descriptor.ConstructedResource(Random.codec)`. Its
103
+ * saved form is the number itself, so it needs no `encode`.
104
+ *
105
+ * @category Resource
106
+ */
107
+ export declare const codec: StandardSchema<number, State>;
98
108
  /**
99
109
  * The starting state for a seed, reduced to an unsigned 32-bit integer like
100
110
  * `make`: the value to give a random resource in `Game.Runtime.make`.
@@ -1 +1 @@
1
- {"version":3,"file":"Random.d.ts","sourceRoot":"","sources":["../src/Random.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,OAAO,KAAK,KAAK,KAAK,MAAM,uBAAuB,CAAA;AACnD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAA;AACtD,OAAO,KAAK,MAAM,MAAM,wBAAwB,CAAA;AAEhD;;;;GAIG;AACH,MAAM,WAAW,MAAM;IACrB,8FAA8F;IAC9F,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,yBAAyB;IACzB,IAAI,IAAI,MAAM,CAAA;IACd,6GAA6G;IAC7G,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;IACvC,gHAAgH;IAChH,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,CAAA;IAClD,4FAA4F;IAC5F,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,SAAS,CAAA;IAC/C,iDAAiD;IACjD,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;IAC7C;;;;;OAKG;IACH,QAAQ,CAAC,CAAC,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,MAAM,GAAG,CAAC,GAAG,SAAS,CAAA;CACjF;AAsED;;;;;;GAMG;AACH,eAAO,MAAM,IAAI,UAAW,MAAM,KAAG,MAA+B,CAAA;AAEpE;;;;;;GAMG;AACH,MAAM,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,cAAc,CAAC,CAAA;AAEzD,+DAA+D;AAC/D,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,IAAI,EAAE,oBAAoB,CAAA;IACnC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAA;CACxB;AAKD;;;;GAIG;AACH,eAAO,MAAM,MAAM,QAAS,MAAM,KAAG,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,YAAY,CAC2B,CAAA;AAEjG;;;;GAIG;AACH,eAAO,MAAM,MAAM,QAAS,OAAO,KAAG,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,YAAY,CAC0B,CAAA;AAEjG;;;;;GAKG;AACH,eAAO,MAAM,IAAI,UAAW,MAAM,KAAG,KAA+B,CAAA;AAmBpE;;;;;;;GAOG;AACH,eAAO,MAAM,IAAI,SAAU,SAAS,CAAC,KAAK,CAAC,KAAG,MAA8B,CAAA"}
1
+ {"version":3,"file":"Random.d.ts","sourceRoot":"","sources":["../src/Random.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,OAAO,KAAK,KAAK,KAAK,MAAM,uBAAuB,CAAA;AACnD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAA;AACtD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAA;AAChE,OAAO,KAAK,MAAM,MAAM,wBAAwB,CAAA;AAGhD;;;;GAIG;AACH,MAAM,WAAW,MAAM;IACrB,8FAA8F;IAC9F,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,yBAAyB;IACzB,IAAI,IAAI,MAAM,CAAA;IACd,6GAA6G;IAC7G,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;IACvC,gHAAgH;IAChH,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,CAAA;IAClD,4FAA4F;IAC5F,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,SAAS,CAAA;IAC/C,iDAAiD;IACjD,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;IAC7C;;;;;OAKG;IACH,QAAQ,CAAC,CAAC,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,MAAM,GAAG,CAAC,GAAG,SAAS,CAAA;CACjF;AAsED;;;;;;GAMG;AACH,eAAO,MAAM,IAAI,UAAW,MAAM,KAAG,MAA+B,CAAA;AAEpE;;;;;;GAMG;AACH,MAAM,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,cAAc,CAAC,CAAA;AAEzD,+DAA+D;AAC/D,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,IAAI,EAAE,oBAAoB,CAAA;IACnC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAA;CACxB;AAKD;;;;GAIG;AACH,eAAO,MAAM,MAAM,QAAS,MAAM,KAAG,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,YAAY,CAC2B,CAAA;AAEjG;;;;;GAKG;AACH,eAAO,MAAM,EAAE,QAAS,OAAO,KAAG,GAAG,IAAI,KAAqB,CAAA;AAE9D;;;;;;GAMG;AACH,eAAO,MAAM,KAAK,EAAE,cAAc,CAAC,MAAM,EAAE,KAAK,CAG/C,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,IAAI,UAAW,MAAM,KAAG,KAA+B,CAAA;AAmBpE;;;;;;;GAOG;AACH,eAAO,MAAM,IAAI,SAAU,SAAS,CAAC,KAAK,CAAC,KAAG,MAA8B,CAAA"}
package/dist/Random.js CHANGED
@@ -1,4 +1,5 @@
1
1
  import * as Result from "@typeonce/ritmo/Result";
2
+ import { codecOf } from "./internal/codec.js";
2
3
  const usable = (weight) => weight > 0 && weight < Infinity;
3
4
  class Mulberry32 {
4
5
  state;
@@ -72,17 +73,26 @@ class Mulberry32 {
72
73
  export const make = (state) => new Mulberry32(state);
73
74
  const isState = (value) => typeof value === "number" && Number.isInteger(value) && value >= 0 && value <= 0xffffffff;
74
75
  /**
75
- * Validates a state, for `Descriptor.ConstructedResource(Random)` and saves.
76
+ * Validates a state, for game code that builds one from a number.
76
77
  *
77
78
  * @category Resource
78
79
  */
79
80
  export const result = (raw) => isState(raw) ? Result.success(raw) : Result.failure({ _tag: "InvalidRandomState", value: raw });
80
81
  /**
81
- * Validates a state read from untrusted data (a save).
82
+ * Whether any value is a generator state: a guard, also for building a
83
+ * state field in your own schema (`Schema.declare(Random.is)`).
82
84
  *
83
85
  * @category Resource
84
86
  */
85
- export const decode = (raw) => isState(raw) ? Result.success(raw) : Result.failure({ _tag: "InvalidRandomState", value: raw });
87
+ export const is = (raw) => isState(raw);
88
+ /**
89
+ * The codec of a random resource's state (a Standard Schema, see
90
+ * `Descriptor.Codec`): `Descriptor.ConstructedResource(Random.codec)`. Its
91
+ * saved form is the number itself, so it needs no `encode`.
92
+ *
93
+ * @category Resource
94
+ */
95
+ export const codec = codecOf((raw) => isState(raw) ? Result.success(raw) : Result.failure({ _tag: "InvalidRandomState", value: raw }), "a generator state: an unsigned 32-bit integer");
86
96
  /**
87
97
  * The starting state for a seed, reduced to an unsigned 32-bit integer like
88
98
  * `make`: the value to give a random resource in `Game.Runtime.make`.
@@ -1 +1 @@
1
- {"version":3,"file":"Random.js","sourceRoot":"","sources":["../src/Random.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Random.js","sourceRoot":"","sources":["../src/Random.ts"],"names":[],"mappings":"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"}
package/dist/Scalar.d.ts CHANGED
@@ -35,12 +35,13 @@
35
35
  * Pure scalar combinators that preserve branding after validation.
36
36
  */
37
37
  import type * as Brand from "@typeonce/ritmo/Brand";
38
+ import type { StandardSchema } from "@typeonce/ritmo/Descriptor";
38
39
  import type * as Result from "@typeonce/ritmo/Result";
39
40
  /**
40
41
  * Finite number brand.
41
42
  *
42
43
  * Values of this type are guaranteed not to be `NaN`, `Infinity`, or
43
- * `-Infinity` when they come from a validator (`result`, `decode`). The
44
+ * `-Infinity` when they come from a constructor (`result`, `option`) or a `codec`. The
44
45
  * arithmetic helpers here and in `Vector2` keep the brand without
45
46
  * re-validating, so their results are finite only while they stay within
46
47
  * `±Number.MAX_VALUE`: game-sized values never come close, but validate
@@ -86,27 +87,45 @@ export type InterpolationError = {
86
87
  readonly start: number;
87
88
  readonly end: number;
88
89
  };
90
+ /**
91
+ * The constructors, guard, and schema of one scalar brand.
92
+ *
93
+ * @category Constructors
94
+ */
95
+ export interface Constructor<Value> {
96
+ /** Validates one number and returns an explicit success/failure result. */
97
+ readonly result: (raw: number) => Result.Result<Value, Error>;
98
+ /** Validates one number and returns `null` on failure. */
99
+ readonly option: (raw: number) => Value | null;
100
+ /** Whether any value is a number of this brand. */
101
+ readonly is: (raw: unknown) => raw is Value;
102
+ /** The Standard Schema for `Descriptor.ConstructedComponent(...)`: the saved form is the number itself. */
103
+ readonly codec: StandardSchema<number, Value>;
104
+ }
89
105
  /**
90
106
  * Constructor for {@link Finite}: `result` (explicit failure), `option`
91
- * (`null` on failure), and `is` (a type guard).
107
+ * (`null` on failure), `is` (a type guard), and `codec`, for
108
+ * `Descriptor.ConstructedComponent(Scalar.Finite.codec)`.
92
109
  *
93
110
  * @category Constructors
94
111
  */
95
- export declare const Finite: Brand.Constructor<Finite, number, Error>;
112
+ export declare const Finite: Constructor<Finite>;
96
113
  /**
97
114
  * Constructor for {@link NonNegative}: `result` (explicit failure), `option`
98
- * (`null` on failure), and `is` (a type guard).
115
+ * (`null` on failure), `is` (a type guard), and `codec`, for
116
+ * `Descriptor.ConstructedComponent(Scalar.NonNegative.codec)`.
99
117
  *
100
118
  * @category Constructors
101
119
  */
102
- export declare const NonNegative: Brand.Constructor<NonNegative, number, Error>;
120
+ export declare const NonNegative: Constructor<NonNegative>;
103
121
  /**
104
122
  * Constructor for {@link Positive}: `result` (explicit failure), `option`
105
- * (`null` on failure), and `is` (a type guard).
123
+ * (`null` on failure), `is` (a type guard), and `codec`, for
124
+ * `Descriptor.ConstructedComponent(Scalar.Positive.codec)`.
106
125
  *
107
126
  * @category Constructors
108
127
  */
109
- export declare const Positive: Brand.Constructor<Positive, number, Error>;
128
+ export declare const Positive: Constructor<Positive>;
110
129
  /**
111
130
  * Clamps one finite value between two finite bounds.
112
131
  *
@@ -1 +1 @@
1
- {"version":3,"file":"Scalar.d.ts","sourceRoot":"","sources":["../src/Scalar.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,OAAO,KAAK,KAAK,KAAK,MAAM,uBAAuB,CAAA;AAEnD,OAAO,KAAK,KAAK,MAAM,MAAM,wBAAwB,CAAA;AAErD;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,eAAe,CAAC,CAAA;AAC3D;;;;GAIG;AACH,MAAM,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAA;AACrE;;;;GAIG;AACH,MAAM,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAA;AAE/D;;;;GAIG;AACH,MAAM,MAAM,KAAK,GACb;IAAE,QAAQ,CAAC,GAAG,EAAE,kBAAkB,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAC5D;IAAE,QAAQ,CAAC,GAAG,EAAE,iBAAiB,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAC3D;IAAE,QAAQ,CAAC,GAAG,EAAE,oBAAoB,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAA;AAElE;;;;GAIG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAC/B,QAAQ,CAAC,GAAG,EAAE,kBAAkB,CAAA;IAChC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;CACrB,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,MAAM,0CAAkB,CAAA;AACrC;;;;;GAKG;AACH,eAAO,MAAM,WAAW,+CAAuB,CAAA;AAC/C;;;;;GAKG;AACH,eAAO,MAAM,QAAQ,4CAAoB,CAAA;AAEzC;;;;;;;GAOG;AACH,eAAO,MAAM,KAAK,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,KAAK,MAAuB,CAAA;AACxF;;;;;;;;GAQG;AACH,eAAO,MAAM,IAAI,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,MAAsB,CAAA;AACzF;;;;;;;GAOG;AACH,eAAO,MAAM,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,KAAK,MAA0B,CAAA;AAC7G;;;;;;GAMG;AACH,eAAO,MAAM,WAAW,EAAE,CACxB,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,KACV,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAwB,CAAA;AACrE;;;;;;GAMG;AACH,eAAO,MAAM,KAAK,EAAE,CAClB,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,KACd,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAkB,CAAA;AAE/D;;;;GAIG;AACH,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA"}
1
+ {"version":3,"file":"Scalar.d.ts","sourceRoot":"","sources":["../src/Scalar.ts"],"names":[],"mappings":"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"}
package/dist/Scalar.js CHANGED
@@ -1,21 +1,24 @@
1
1
  import * as internal from "./internal/scalar.js";
2
2
  /**
3
3
  * Constructor for {@link Finite}: `result` (explicit failure), `option`
4
- * (`null` on failure), and `is` (a type guard).
4
+ * (`null` on failure), `is` (a type guard), and `codec`, for
5
+ * `Descriptor.ConstructedComponent(Scalar.Finite.codec)`.
5
6
  *
6
7
  * @category Constructors
7
8
  */
8
9
  export const Finite = internal.Finite;
9
10
  /**
10
11
  * Constructor for {@link NonNegative}: `result` (explicit failure), `option`
11
- * (`null` on failure), and `is` (a type guard).
12
+ * (`null` on failure), `is` (a type guard), and `codec`, for
13
+ * `Descriptor.ConstructedComponent(Scalar.NonNegative.codec)`.
12
14
  *
13
15
  * @category Constructors
14
16
  */
15
17
  export const NonNegative = internal.NonNegative;
16
18
  /**
17
19
  * Constructor for {@link Positive}: `result` (explicit failure), `option`
18
- * (`null` on failure), and `is` (a type guard).
20
+ * (`null` on failure), `is` (a type guard), and `codec`, for
21
+ * `Descriptor.ConstructedComponent(Scalar.Positive.codec)`.
19
22
  *
20
23
  * @category Constructors
21
24
  */
@@ -1 +1 @@
1
- {"version":3,"file":"Scalar.js","sourceRoot":"","sources":["../src/Scalar.ts"],"names":[],"mappings":"AAqCA,OAAO,KAAK,QAAQ,MAAM,sBAAsB,CAAA;AAkDhD;;;;;GAKG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAA;AACrC;;;;;GAKG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,QAAQ,CAAC,WAAW,CAAA;AAC/C;;;;;GAKG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAA;AAEzC;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,KAAK,GAAwD,QAAQ,CAAC,KAAK,CAAA;AACxF;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,IAAI,GAA2D,QAAQ,CAAC,IAAI,CAAA;AACzF;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAuE,QAAQ,CAAC,QAAQ,CAAA;AAC7G;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,WAAW,GAIyB,QAAQ,CAAC,WAAW,CAAA;AACrE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,KAAK,GAM+B,QAAQ,CAAC,KAAK,CAAA"}
1
+ {"version":3,"file":"Scalar.js","sourceRoot":"","sources":["../src/Scalar.ts"],"names":[],"mappings":"AAqCA,OAAO,KAAK,QAAQ,MAAM,sBAAsB,CAAA;AAmEhD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,MAAM,GAAwB,QAAQ,CAAC,MAAM,CAAA;AAC1D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,WAAW,GAA6B,QAAQ,CAAC,WAAW,CAAA;AACzE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,QAAQ,GAA0B,QAAQ,CAAC,QAAQ,CAAA;AAEhE;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,KAAK,GAAwD,QAAQ,CAAC,KAAK,CAAA;AACxF;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,IAAI,GAA2D,QAAQ,CAAC,IAAI,CAAA;AACzF;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAuE,QAAQ,CAAC,QAAQ,CAAA;AAC7G;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,WAAW,GAIyB,QAAQ,CAAC,WAAW,CAAA;AACrE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,KAAK,GAM+B,QAAQ,CAAC,KAAK,CAAA"}
package/dist/Size2.d.ts CHANGED
@@ -31,6 +31,7 @@
31
31
  * Pure readers and raw views over already-validated size values.
32
32
  */
33
33
  import type * as Brand from "@typeonce/ritmo/Brand";
34
+ import type { StandardSchema } from "@typeonce/ritmo/Descriptor";
34
35
  import type * as Result from "@typeonce/ritmo/Result";
35
36
  import type * as Scalar from "./Scalar.ts";
36
37
  /**
@@ -62,15 +63,6 @@ export type Error = {
62
63
  readonly height: Scalar.Error | null;
63
64
  readonly input: Raw;
64
65
  };
65
- /**
66
- * Failure produced by `decode` when the input does not have the raw shape.
67
- *
68
- * @category Size Types
69
- */
70
- export type DecodeError = {
71
- readonly tag: "Size2/Malformed";
72
- readonly input: unknown;
73
- };
74
66
  /**
75
67
  * Validates one raw size and returns an explicit result.
76
68
  *
@@ -78,13 +70,20 @@ export type DecodeError = {
78
70
  */
79
71
  export declare const result: (raw: Raw) => Result.Result<Size2, Error>;
80
72
  /**
81
- * Validates untrusted input of any shape, for example a value read from a
82
- * save file. Descriptors built from this module use it when restoring
83
- * snapshots.
73
+ * The codec of `Size2` (a Standard Schema, see `Descriptor.Codec`): give it to
74
+ * `Descriptor.ConstructedComponent(...)` so raw input and saves are validated.
75
+ * Its saved form is the raw shape, so it needs no `encode`. To put a `Size2`
76
+ * inside your own object schema, use {@link is} with your library's guard
77
+ * schema (`Schema.declare`, `z.custom`).
78
+ *
79
+ * @example
80
+ * ```ts
81
+ * const Position = Descriptor.ConstructedComponent(Size2.codec)("Game/Position")
82
+ * ```
84
83
  *
85
84
  * @category Construction
86
85
  */
87
- export declare const decode: (raw: unknown) => Result.Result<Size2, Error | DecodeError>;
86
+ export declare const codec: StandardSchema<Raw, Size2>;
88
87
  /**
89
88
  * Validates one raw size and returns `null` on failure.
90
89
  *
@@ -92,11 +91,12 @@ export declare const decode: (raw: unknown) => Result.Result<Size2, Error | Deco
92
91
  */
93
92
  export declare const option: (raw: Raw) => Size2 | null;
94
93
  /**
95
- * Checks whether one raw size already satisfies the size invariants.
94
+ * Whether any value is a valid `Size2`: a guard, also for building a
95
+ * `Size2` field in your own schema (`Schema.declare(Size2.is)`).
96
96
  *
97
97
  * @category Construction
98
98
  */
99
- export declare const is: (raw: Raw) => raw is Raw & Size2;
99
+ export declare const is: (raw: unknown) => raw is Size2;
100
100
  /**
101
101
  * Converts one branded size back to a fresh raw object.
102
102
  *
@@ -1 +1 @@
1
- {"version":3,"file":"Size2.d.ts","sourceRoot":"","sources":["../src/Size2.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,OAAO,KAAK,KAAK,KAAK,MAAM,uBAAuB,CAAA;AAEnD,OAAO,KAAK,KAAK,MAAM,MAAM,wBAAwB,CAAA;AACrD,OAAO,KAAK,KAAK,MAAM,MAAM,aAAa,CAAA;AAE1C;;;;GAIG;AACH,MAAM,MAAM,GAAG,GAAG;IAChB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CACxB,CAAA;AAED;;;;GAIG;AACH,MAAM,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC;IAChC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,WAAW,CAAA;IAClC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,WAAW,CAAA;CACpC,EAAE,OAAO,CAAC,CAAA;AAEX;;;;GAIG;AACH,MAAM,MAAM,KAAK,GAAG;IAClB,QAAQ,CAAC,GAAG,EAAE,eAAe,CAAA;IAC7B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,GAAG,IAAI,CAAA;IACnC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,GAAG,IAAI,CAAA;IACpC,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAA;CACpB,CAAA;AAED;;;;GAIG;AACH,MAAM,MAAM,WAAW,GAAG;IACxB,QAAQ,CAAC,GAAG,EAAE,iBAAiB,CAAA;IAC/B,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAA;CACxB,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,MAAM,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAmB,CAAA;AAChF;;;;;;GAMG;AACH,eAAO,MAAM,MAAM,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,GAAG,WAAW,CAAmB,CAAA;AAClG;;;;GAIG;AACH,eAAO,MAAM,MAAM,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,KAAK,GAAG,IAAsB,CAAA;AACjE;;;;GAIG;AACH,eAAO,MAAM,EAAE,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,GAAG,IAAI,GAAG,GAAG,KAAmB,CAAA;AAC/D;;;;GAIG;AACH,eAAO,MAAM,KAAK,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK,GAAoB,CAAA;AACzD;;;;GAIG;AACH,eAAO,MAAM,KAAK,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK,MAAM,CAAC,WAA4B,CAAA;AACxE;;;;GAIG;AACH,eAAO,MAAM,MAAM,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK,MAAM,CAAC,WAA6B,CAAA"}
1
+ {"version":3,"file":"Size2.d.ts","sourceRoot":"","sources":["../src/Size2.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,OAAO,KAAK,KAAK,KAAK,MAAM,uBAAuB,CAAA;AACnD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAA;AAEhE,OAAO,KAAK,KAAK,MAAM,MAAM,wBAAwB,CAAA;AACrD,OAAO,KAAK,KAAK,MAAM,MAAM,aAAa,CAAA;AAE1C;;;;GAIG;AACH,MAAM,MAAM,GAAG,GAAG;IAChB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CACxB,CAAA;AAED;;;;GAIG;AACH,MAAM,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC;IAChC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,WAAW,CAAA;IAClC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,WAAW,CAAA;CACpC,EAAE,OAAO,CAAC,CAAA;AAEX;;;;GAIG;AACH,MAAM,MAAM,KAAK,GAAG;IAClB,QAAQ,CAAC,GAAG,EAAE,eAAe,CAAA;IAC7B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,GAAG,IAAI,CAAA;IACnC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,GAAG,IAAI,CAAA;IACpC,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAA;CACpB,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,MAAM,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAmB,CAAA;AAChF;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,KAAK,EAAE,cAAc,CAAC,GAAG,EAAE,KAAK,CAAkB,CAAA;AAC/D;;;;GAIG;AACH,eAAO,MAAM,MAAM,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,KAAK,GAAG,IAAsB,CAAA;AACjE;;;;;GAKG;AACH,eAAO,MAAM,EAAE,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,GAAG,IAAI,KAAmB,CAAA;AAC7D;;;;GAIG;AACH,eAAO,MAAM,KAAK,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK,GAAoB,CAAA;AACzD;;;;GAIG;AACH,eAAO,MAAM,KAAK,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK,MAAM,CAAC,WAA4B,CAAA;AACxE;;;;GAIG;AACH,eAAO,MAAM,MAAM,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK,MAAM,CAAC,WAA6B,CAAA"}
package/dist/Size2.js CHANGED
@@ -6,13 +6,20 @@ import * as internal from "./internal/size2.js";
6
6
  */
7
7
  export const result = internal.result;
8
8
  /**
9
- * Validates untrusted input of any shape, for example a value read from a
10
- * save file. Descriptors built from this module use it when restoring
11
- * snapshots.
9
+ * The codec of `Size2` (a Standard Schema, see `Descriptor.Codec`): give it to
10
+ * `Descriptor.ConstructedComponent(...)` so raw input and saves are validated.
11
+ * Its saved form is the raw shape, so it needs no `encode`. To put a `Size2`
12
+ * inside your own object schema, use {@link is} with your library's guard
13
+ * schema (`Schema.declare`, `z.custom`).
14
+ *
15
+ * @example
16
+ * ```ts
17
+ * const Position = Descriptor.ConstructedComponent(Size2.codec)("Game/Position")
18
+ * ```
12
19
  *
13
20
  * @category Construction
14
21
  */
15
- export const decode = internal.decode;
22
+ export const codec = internal.codec;
16
23
  /**
17
24
  * Validates one raw size and returns `null` on failure.
18
25
  *
@@ -20,7 +27,8 @@ export const decode = internal.decode;
20
27
  */
21
28
  export const option = internal.option;
22
29
  /**
23
- * Checks whether one raw size already satisfies the size invariants.
30
+ * Whether any value is a valid `Size2`: a guard, also for building a
31
+ * `Size2` field in your own schema (`Schema.declare(Size2.is)`).
24
32
  *
25
33
  * @category Construction
26
34
  */
package/dist/Size2.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"Size2.js","sourceRoot":"","sources":["../src/Size2.ts"],"names":[],"mappings":"AAiCA,OAAO,KAAK,QAAQ,MAAM,qBAAqB,CAAA;AA8C/C;;;;GAIG;AACH,MAAM,CAAC,MAAM,MAAM,GAA8C,QAAQ,CAAC,MAAM,CAAA;AAChF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,MAAM,GAAgE,QAAQ,CAAC,MAAM,CAAA;AAClG;;;;GAIG;AACH,MAAM,CAAC,MAAM,MAAM,GAA+B,QAAQ,CAAC,MAAM,CAAA;AACjE;;;;GAIG;AACH,MAAM,CAAC,MAAM,EAAE,GAAqC,QAAQ,CAAC,EAAE,CAAA;AAC/D;;;;GAIG;AACH,MAAM,CAAC,MAAM,KAAK,GAAyB,QAAQ,CAAC,KAAK,CAAA;AACzD;;;;GAIG;AACH,MAAM,CAAC,MAAM,KAAK,GAAwC,QAAQ,CAAC,KAAK,CAAA;AACxE;;;;GAIG;AACH,MAAM,CAAC,MAAM,MAAM,GAAwC,QAAQ,CAAC,MAAM,CAAA"}
1
+ {"version":3,"file":"Size2.js","sourceRoot":"","sources":["../src/Size2.ts"],"names":[],"mappings":"AAkCA,OAAO,KAAK,QAAQ,MAAM,qBAAqB,CAAA;AAoC/C;;;;GAIG;AACH,MAAM,CAAC,MAAM,MAAM,GAA8C,QAAQ,CAAC,MAAM,CAAA;AAChF;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,MAAM,KAAK,GAA+B,QAAQ,CAAC,KAAK,CAAA;AAC/D;;;;GAIG;AACH,MAAM,CAAC,MAAM,MAAM,GAA+B,QAAQ,CAAC,MAAM,CAAA;AACjE;;;;;GAKG;AACH,MAAM,CAAC,MAAM,EAAE,GAAmC,QAAQ,CAAC,EAAE,CAAA;AAC7D;;;;GAIG;AACH,MAAM,CAAC,MAAM,KAAK,GAAyB,QAAQ,CAAC,KAAK,CAAA;AACzD;;;;GAIG;AACH,MAAM,CAAC,MAAM,KAAK,GAAwC,QAAQ,CAAC,KAAK,CAAA;AACxE;;;;GAIG;AACH,MAAM,CAAC,MAAM,MAAM,GAAwC,QAAQ,CAAC,MAAM,CAAA"}
package/dist/Vector2.d.ts CHANGED
@@ -36,6 +36,7 @@
36
36
  * Immutable vector math and normalization helpers on already-validated values.
37
37
  */
38
38
  import type * as Brand from "@typeonce/ritmo/Brand";
39
+ import type { StandardSchema } from "@typeonce/ritmo/Descriptor";
39
40
  import type * as Result from "@typeonce/ritmo/Result";
40
41
  import type * as Scalar from "./Scalar.ts";
41
42
  /**
@@ -67,15 +68,6 @@ export type Error = {
67
68
  readonly y: Scalar.Error | null;
68
69
  readonly input: Raw;
69
70
  };
70
- /**
71
- * Failure produced by `decode` when the input does not have the raw shape.
72
- *
73
- * @category Vector Types
74
- */
75
- export type DecodeError = {
76
- readonly tag: "Vector2/Malformed";
77
- readonly input: unknown;
78
- };
79
71
  /**
80
72
  * Explicit failure produced when a zero-length vector cannot be normalized.
81
73
  *
@@ -96,13 +88,20 @@ export type NormalizeError = {
96
88
  */
97
89
  export declare const result: (raw: Raw) => Result.Result<Vector2, Error>;
98
90
  /**
99
- * Validates untrusted input of any shape, for example a value read from a
100
- * save file. Descriptors built from this module use it when restoring
101
- * snapshots.
91
+ * The codec of `Vector2` (a Standard Schema, see `Descriptor.Codec`): give it to
92
+ * `Descriptor.ConstructedComponent(...)` so raw input and saves are validated.
93
+ * Its saved form is the raw shape, so it needs no `encode`. To put a `Vector2`
94
+ * inside your own object schema, use {@link is} with your library's guard
95
+ * schema (`Schema.declare`, `z.custom`).
96
+ *
97
+ * @example
98
+ * ```ts
99
+ * const Position = Descriptor.ConstructedComponent(Vector2.codec)("Game/Position")
100
+ * ```
102
101
  *
103
102
  * @category Construction
104
103
  */
105
- export declare const decode: (raw: unknown) => Result.Result<Vector2, Error | DecodeError>;
104
+ export declare const codec: StandardSchema<Raw, Vector2>;
106
105
  /**
107
106
  * Validates one raw vector and returns `null` on failure.
108
107
  *
@@ -110,11 +109,12 @@ export declare const decode: (raw: unknown) => Result.Result<Vector2, Error | De
110
109
  */
111
110
  export declare const option: (raw: Raw) => Vector2 | null;
112
111
  /**
113
- * Checks whether one raw vector already satisfies the vector invariants.
112
+ * Whether any value is a valid `Vector2`: a guard, also for building a
113
+ * `Vector2` field in your own schema (`Schema.declare(Vector2.is)`).
114
114
  *
115
115
  * @category Construction
116
116
  */
117
- export declare const is: (raw: Raw) => raw is Raw & Vector2;
117
+ export declare const is: (raw: unknown) => raw is Vector2;
118
118
  /**
119
119
  * Converts one branded vector back to a fresh raw object.
120
120
  *
@@ -1 +1 @@
1
- {"version":3,"file":"Vector2.d.ts","sourceRoot":"","sources":["../src/Vector2.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Vector2.d.ts","sourceRoot":"","sources":["../src/Vector2.ts"],"names":[],"mappings":"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"}