@typeonce/ritmo 0.7.0 → 0.9.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 (141) hide show
  1. package/README.md +3 -2
  2. package/dist/Clock.d.ts +19 -4
  3. package/dist/Clock.d.ts.map +1 -1
  4. package/dist/Clock.js +18 -2
  5. package/dist/Clock.js.map +1 -1
  6. package/dist/Command.d.ts +181 -40
  7. package/dist/Command.d.ts.map +1 -1
  8. package/dist/Command.js +31 -11
  9. package/dist/Command.js.map +1 -1
  10. package/dist/Condition.d.ts +12 -1
  11. package/dist/Condition.d.ts.map +1 -1
  12. package/dist/Condition.js.map +1 -1
  13. package/dist/Debug.d.ts +127 -13
  14. package/dist/Debug.d.ts.map +1 -1
  15. package/dist/Descriptor.d.ts +61 -10
  16. package/dist/Descriptor.d.ts.map +1 -1
  17. package/dist/Descriptor.js +22 -10
  18. package/dist/Descriptor.js.map +1 -1
  19. package/dist/Entity.d.ts +22 -7
  20. package/dist/Entity.d.ts.map +1 -1
  21. package/dist/Entity.js.map +1 -1
  22. package/dist/EntityScope.d.ts +20 -1
  23. package/dist/EntityScope.d.ts.map +1 -1
  24. package/dist/EntityScope.js +8 -2
  25. package/dist/EntityScope.js.map +1 -1
  26. package/dist/FixedLoop.d.ts +106 -0
  27. package/dist/FixedLoop.d.ts.map +1 -0
  28. package/dist/FixedLoop.js +97 -0
  29. package/dist/FixedLoop.js.map +1 -0
  30. package/dist/HostClock.d.ts +1 -1
  31. package/dist/HostClock.d.ts.map +1 -1
  32. package/dist/HostClock.js +2 -1
  33. package/dist/HostClock.js.map +1 -1
  34. package/dist/Machine.d.ts +59 -34
  35. package/dist/Machine.d.ts.map +1 -1
  36. package/dist/Machine.js +10 -3
  37. package/dist/Machine.js.map +1 -1
  38. package/dist/Query.d.ts +100 -14
  39. package/dist/Query.d.ts.map +1 -1
  40. package/dist/Query.js +34 -5
  41. package/dist/Query.js.map +1 -1
  42. package/dist/Relation.d.ts +5 -14
  43. package/dist/Relation.d.ts.map +1 -1
  44. package/dist/Relation.js +0 -32
  45. package/dist/Relation.js.map +1 -1
  46. package/dist/Runtime.d.ts +61 -15
  47. package/dist/Runtime.d.ts.map +1 -1
  48. package/dist/Runtime.js +594 -70
  49. package/dist/Runtime.js.map +1 -1
  50. package/dist/Schedule.d.ts +24 -15
  51. package/dist/Schedule.d.ts.map +1 -1
  52. package/dist/Schedule.js +2 -1
  53. package/dist/Schedule.js.map +1 -1
  54. package/dist/Schema.d.ts +233 -48
  55. package/dist/Schema.d.ts.map +1 -1
  56. package/dist/Schema.js +33 -7
  57. package/dist/Schema.js.map +1 -1
  58. package/dist/Snapshot.d.ts +90 -1
  59. package/dist/Snapshot.d.ts.map +1 -1
  60. package/dist/Snapshot.js +42 -1
  61. package/dist/Snapshot.js.map +1 -1
  62. package/dist/System.d.ts +132 -31
  63. package/dist/System.d.ts.map +1 -1
  64. package/dist/System.js +32 -0
  65. package/dist/System.js.map +1 -1
  66. package/dist/index.d.ts +4 -0
  67. package/dist/index.d.ts.map +1 -1
  68. package/dist/index.js +4 -0
  69. package/dist/index.js.map +1 -1
  70. package/dist/internal/cells.d.ts +2 -0
  71. package/dist/internal/cells.d.ts.map +1 -1
  72. package/dist/internal/cells.js +34 -8
  73. package/dist/internal/cells.js.map +1 -1
  74. package/dist/internal/debug.d.ts +10 -0
  75. package/dist/internal/debug.d.ts.map +1 -1
  76. package/dist/internal/debug.js +171 -12
  77. package/dist/internal/debug.js.map +1 -1
  78. package/dist/internal/equal.d.ts +8 -0
  79. package/dist/internal/equal.d.ts.map +1 -0
  80. package/dist/internal/equal.js +38 -0
  81. package/dist/internal/equal.js.map +1 -0
  82. package/dist/internal/fragments.d.ts +2 -6
  83. package/dist/internal/fragments.d.ts.map +1 -1
  84. package/dist/internal/fragments.js +36 -3
  85. package/dist/internal/fragments.js.map +1 -1
  86. package/dist/internal/game.d.ts +2 -0
  87. package/dist/internal/game.d.ts.map +1 -1
  88. package/dist/internal/game.js +48 -7
  89. package/dist/internal/game.js.map +1 -1
  90. package/dist/internal/order.d.ts.map +1 -1
  91. package/dist/internal/order.js +4 -2
  92. package/dist/internal/order.js.map +1 -1
  93. package/dist/internal/queries.d.ts.map +1 -1
  94. package/dist/internal/queries.js +57 -26
  95. package/dist/internal/queries.js.map +1 -1
  96. package/dist/internal/relations.d.ts +10 -0
  97. package/dist/internal/relations.d.ts.map +1 -0
  98. package/dist/internal/relations.js +32 -0
  99. package/dist/internal/relations.js.map +1 -0
  100. package/dist/internal/requirements.d.ts +26 -0
  101. package/dist/internal/requirements.d.ts.map +1 -0
  102. package/dist/internal/requirements.js +46 -0
  103. package/dist/internal/requirements.js.map +1 -0
  104. package/dist/internal/streams.d.ts +2 -0
  105. package/dist/internal/streams.d.ts.map +1 -1
  106. package/dist/internal/streams.js +10 -0
  107. package/dist/internal/streams.js.map +1 -1
  108. package/dist/internal/world.d.ts +7 -1
  109. package/dist/internal/world.d.ts.map +1 -1
  110. package/dist/internal/world.js +53 -3
  111. package/dist/internal/world.js.map +1 -1
  112. package/package.json +1 -1
  113. package/src/Clock.ts +29 -4
  114. package/src/Command.ts +281 -67
  115. package/src/Condition.ts +17 -1
  116. package/src/Debug.ts +124 -15
  117. package/src/Descriptor.ts +92 -21
  118. package/src/Entity.ts +23 -7
  119. package/src/EntityScope.ts +21 -2
  120. package/src/FixedLoop.ts +218 -0
  121. package/src/HostClock.ts +2 -1
  122. package/src/Machine.ts +72 -35
  123. package/src/Query.ts +118 -17
  124. package/src/Relation.ts +5 -67
  125. package/src/Runtime.ts +659 -85
  126. package/src/Schedule.ts +31 -19
  127. package/src/Schema.ts +297 -57
  128. package/src/Snapshot.ts +94 -2
  129. package/src/System.ts +151 -29
  130. package/src/index.ts +4 -0
  131. package/src/internal/cells.ts +42 -10
  132. package/src/internal/debug.ts +179 -14
  133. package/src/internal/equal.ts +31 -0
  134. package/src/internal/fragments.ts +35 -5
  135. package/src/internal/game.ts +69 -7
  136. package/src/internal/order.ts +8 -4
  137. package/src/internal/queries.ts +62 -12
  138. package/src/internal/relations.ts +52 -0
  139. package/src/internal/requirements.ts +71 -0
  140. package/src/internal/streams.ts +11 -0
  141. package/src/internal/world.ts +60 -4
@@ -133,6 +133,37 @@ type ConstructedFor<Kind extends DescriptorKind, Name extends string, Value, Raw
133
133
  export interface TransientDescriptor<out Kind extends "component" | "resource", out Name extends string, in out Value> extends Descriptor<Kind, Name, Value> {
134
134
  readonly transient: true;
135
135
  }
136
+ /**
137
+ * Marks a component that is never edited in place: `Game.Query.write(...)`
138
+ * rejects it, and the only way to change its value is to replace it with
139
+ * `commands.insert(...)` (applied at `applyDeferred()`, seen by
140
+ * `Game.Query.changed(...)`).
141
+ */
142
+ export interface Immutable {
143
+ readonly immutable: true;
144
+ }
145
+ /**
146
+ * Options of the component descriptor constructors (`Component`,
147
+ * `ConstructedComponent`, `TransientComponent`).
148
+ */
149
+ export interface ComponentOptions {
150
+ /**
151
+ * `true` for data that says what an entity is (a kind, a team, a tile) and
152
+ * is replaced, never edited: queries can only read it, and
153
+ * `commands.insert(...)` replaces it. Leave it out for state that systems
154
+ * update every frame.
155
+ */
156
+ readonly immutable?: true;
157
+ }
158
+ /** The descriptor a component constructor returns for `Options`: `D`, plus `Immutable` when `immutable: true`. */
159
+ export type WithComponentOptions<D, Options extends ComponentOptions> = Options extends {
160
+ readonly immutable: true;
161
+ } ? D & Immutable : D;
162
+ /**
163
+ * Whether a component descriptor was declared `immutable: true` (readable by
164
+ * queries, replaced only with `commands.insert(...)`).
165
+ */
166
+ export declare const isImmutable: (descriptor: Descriptor.Any) => descriptor is Descriptor.Any & Immutable;
136
167
  /**
137
168
  * Type-level helpers for working with descriptors.
138
169
  */
@@ -155,6 +186,15 @@ export declare namespace Descriptor {
155
186
  type ConstructionError<T extends Any> = T extends ConstructedDescriptor<infer _Kind, infer _Name, infer _Value, infer _Raw, infer Error> ? Error : never;
156
187
  type Constructor<T extends Any> = T extends ConstructedDescriptor<infer _Kind, infer _Name, infer Value, infer Raw, infer Error> ? ResultConstructor<Value, Raw, Error> : never;
157
188
  }
189
+ /**
190
+ * The message naming why `Value` cannot be the value of a descriptor of
191
+ * `Kind`, or `never` when it can. `any` turns off every check on the
192
+ * descriptor's reads and writes, and `never` erases the fragment it is listed in.
193
+ */
194
+ type Article<Kind extends string> = Kind extends "event" ? "an" : "a";
195
+ type ValueRejection<Kind extends string, Value> = 0 extends 1 & Value ? `${Article<Kind>} ${Kind} value cannot be \`any\`: give it a type (use \`unknown\` for a value you never read)` : [Value] extends [never] ? `${Article<Kind>} ${Kind} value cannot be \`never\`: give it a type (use \`{}\` for a marker)` : never;
196
+ /** `Make`, or, when `Value` is rejected, a function whose only parameter is the message. */
197
+ type CheckedValue<Kind extends string, Value, Make> = [ValueRejection<Kind, Value>] extends [never] ? Make : (name: ValueRejection<Kind, Value>) => never;
158
198
  /**
159
199
  * Defines a component descriptor.
160
200
  *
@@ -164,12 +204,18 @@ export declare namespace Descriptor {
164
204
  * Components are the only descriptor kind that can be queried directly with
165
205
  * `Game.Query.read(...)`, `write(...)`, or `optional(...)`.
166
206
  *
207
+ * The value is a real type: `any` and `never` do not compile (here and in
208
+ * every other descriptor constructor). Use `unknown` for a value no system
209
+ * reads, and `Descriptor.Tag` for a marker.
210
+ *
167
211
  * @example
168
212
  * ```ts
169
213
  * const Position = Descriptor.Component<{ x: number; y: number }>()("Position")
214
+ * // What an entity is, replaced with commands.insert and never written by a query:
215
+ * const EnemyKind = Descriptor.Component<"grunt" | "boss">()("EnemyKind", { immutable: true })
170
216
  * ```
171
217
  */
172
- export declare const Component: <Value>() => <const Name extends string>(name: Name) => Descriptor<"component", Name, Value>;
218
+ export declare const Component: <Value>() => CheckedValue<"component", Value, <const Name extends string, const Options extends ComponentOptions = {}>(name: Name, options?: Options) => WithComponentOptions<Descriptor<"component", Name, Value>, Options>>;
173
219
  /**
174
220
  * Defines a component descriptor that also knows how to validate raw values.
175
221
  *
@@ -183,7 +229,7 @@ export declare const Component: <Value>() => <const Name extends string>(name: N
183
229
  * const Position = Descriptor.ConstructedComponent(Vector2)("Position")
184
230
  * ```
185
231
  */
186
- export declare const ConstructedComponent: <Value, Raw, Error, Constructor extends {} = {}>(constructor: ResultConstructor<Value, Raw, Error> & Constructor) => <const Name extends string>(name: Name) => ConstructedFor<"component", Name, Value, Raw, Error, Constructor>;
232
+ export declare const ConstructedComponent: <Value, Raw, Error, Constructor extends {} = {}>(constructor: ResultConstructor<Value, Raw, Error> & Constructor) => <const Name extends string, const Options extends ComponentOptions = {}>(name: Name, options?: Options) => WithComponentOptions<ConstructedFor<"component", Name, Value, Raw, Error, Constructor>, Options>;
187
233
  /**
188
234
  * Defines a component descriptor that snapshots skip.
189
235
  *
@@ -195,7 +241,7 @@ export declare const ConstructedComponent: <Value, Raw, Error, Constructor exten
195
241
  * const SpriteRef = Descriptor.TransientComponent<{ frame: number }>()("SpriteRef")
196
242
  * ```
197
243
  */
198
- export declare const TransientComponent: <Value>() => <const Name extends string>(name: Name) => TransientDescriptor<"component", Name, Value>;
244
+ export declare const TransientComponent: <Value>() => CheckedValue<"component", Value, <const Name extends string, const Options extends ComponentOptions = {}>(name: Name, options?: Options) => WithComponentOptions<TransientDescriptor<"component", Name, Value>, Options>>;
199
245
  /**
200
246
  * Defines a marker component: no data, only presence (`[Player, {}]`).
201
247
  *
@@ -274,7 +320,7 @@ export declare const isEntityState: (descriptor: Descriptor.Any) => descriptor i
274
320
  * const Score = Descriptor.Resource<number>()("Score")
275
321
  * ```
276
322
  */
277
- export declare const Resource: <Value>() => <const Name extends string>(name: Name) => Descriptor<"resource", Name, Value>;
323
+ export declare const Resource: <Value>() => CheckedValue<"resource", Value, <const Name extends string>(name: Name) => Descriptor<"resource", Name, Value>>;
278
324
  /**
279
325
  * Defines a resource descriptor that also knows how to validate raw values.
280
326
  */
@@ -288,7 +334,7 @@ export declare const ConstructedResource: <Value, Raw, Error, Constructor extend
288
334
  * const DeltaTime = Descriptor.TransientResource<number>()("DeltaTime")
289
335
  * ```
290
336
  */
291
- export declare const TransientResource: <Value>() => <const Name extends string>(name: Name) => TransientDescriptor<"resource", Name, Value>;
337
+ export declare const TransientResource: <Value>() => CheckedValue<"resource", Value, <const Name extends string>(name: Name) => TransientDescriptor<"resource", Name, Value>>;
292
338
  /**
293
339
  * Defines an event descriptor.
294
340
  *
@@ -307,7 +353,7 @@ export declare const TransientResource: <Value>() => <const Name extends string>
307
353
  * const Hit = Descriptor.Event<{ target: number; amount: number }>()("Hit")
308
354
  * ```
309
355
  */
310
- export declare const Event: <Value>() => <const Name extends string>(name: Name) => Descriptor<"event", Name, Value>;
356
+ export declare const Event: <Value>() => CheckedValue<"event", Value, <const Name extends string>(name: Name) => Descriptor<"event", Name, Value>>;
311
357
  /**
312
358
  * Defines a service descriptor.
313
359
  *
@@ -325,7 +371,7 @@ export declare const Event: <Value>() => <const Name extends string>(name: Name)
325
371
  * const Logger = Descriptor.Service<{ log: (message: string) => void }>()("Logger")
326
372
  * ```
327
373
  */
328
- export declare const Service: <Value>() => <const Name extends string>(name: Name) => Descriptor<"service", Name, Value>;
374
+ export declare const Service: <Value>() => CheckedValue<"service", Value, <const Name extends string>(name: Name) => Descriptor<"service", Name, Value>>;
329
375
  /**
330
376
  * Checks whether one descriptor is transient (skipped by snapshots).
331
377
  */
@@ -403,7 +449,10 @@ export declare function constructorOf<D extends Descriptor.Any>(descriptor: D):
403
449
  * `Game.EntityScope(...)` instead when entities only share a lifetime (a
404
450
  * level, a menu) and need no tree, order, or traversal.
405
451
  */
406
- export declare const Hierarchy: typeof RelationModule.Hierarchy;
452
+ export declare const Hierarchy: <const Name extends string, const RelatedName extends string>(name: Name, relatedName: RelatedName) => {
453
+ readonly relation: import("./Relation.ts").RelationDefinition<Name, RelatedName, "hierarchy", import("./Relation.ts").PairBrand<Name, RelatedName, "hierarchy">>;
454
+ readonly related: import("./Relation.ts").RelatedDefinition<RelatedName, Name, "hierarchy", import("./Relation.ts").PairBrand<Name, RelatedName, "hierarchy">>;
455
+ };
407
456
  /**
408
457
  * Defines a general relationship pair with direct edges and reverse lookups.
409
458
  *
@@ -411,8 +460,10 @@ export declare const Hierarchy: typeof RelationModule.Hierarchy;
411
460
  * reverse lookup, but not hierarchy-only behavior such as tree traversal or
412
461
  * child reordering.
413
462
  */
414
- export declare const Relation: typeof RelationModule.Relation;
463
+ export declare const Relation: <const Name extends string, const RelatedName extends string>(name: Name, relatedName: RelatedName) => {
464
+ readonly relation: import("./Relation.ts").RelationDefinition<Name, RelatedName, "relation", import("./Relation.ts").PairBrand<Name, RelatedName, "relation">>;
465
+ readonly related: import("./Relation.ts").RelatedDefinition<RelatedName, Name, "relation", import("./Relation.ts").PairBrand<Name, RelatedName, "relation">>;
466
+ };
415
467
  import * as DecodeModule from "./Decode.ts";
416
- import * as RelationModule from "./Relation.ts";
417
468
  export {};
418
469
  //# sourceMappingURL=Descriptor.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Descriptor.d.ts","sourceRoot":"","sources":["../src/Descriptor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Descriptor.d.ts","sourceRoot":"","sources":["../src/Descriptor.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,12 @@ const descriptorTypeId = "~ritmo/Descriptor";
5
5
  const descriptorConstructionTypeId = "~ritmo/DescriptorConstruction";
6
6
  const descriptorDecodeTypeId = "~ritmo/DescriptorDecode";
7
7
  const descriptorConstruction = Symbol("ritmo/DescriptorConstruction");
8
+ const applyComponentOptions = (descriptor, options) => options?.immutable === true ? { ...descriptor, immutable: true } : descriptor;
9
+ /**
10
+ * Whether a component descriptor was declared `immutable: true` (readable by
11
+ * queries, replaced only with `commands.insert(...)`).
12
+ */
13
+ export const isImmutable = (descriptor) => "immutable" in descriptor && descriptor.immutable === true;
8
14
  /**
9
15
  * Internal descriptor constructor shared by all descriptor helpers.
10
16
  *
@@ -37,12 +43,18 @@ const makeConstructedDescriptor = (kind, name, constructor) => ({
37
43
  * Components are the only descriptor kind that can be queried directly with
38
44
  * `Game.Query.read(...)`, `write(...)`, or `optional(...)`.
39
45
  *
46
+ * The value is a real type: `any` and `never` do not compile (here and in
47
+ * every other descriptor constructor). Use `unknown` for a value no system
48
+ * reads, and `Descriptor.Tag` for a marker.
49
+ *
40
50
  * @example
41
51
  * ```ts
42
52
  * const Position = Descriptor.Component<{ x: number; y: number }>()("Position")
53
+ * // What an entity is, replaced with commands.insert and never written by a query:
54
+ * const EnemyKind = Descriptor.Component<"grunt" | "boss">()("EnemyKind", { immutable: true })
43
55
  * ```
44
56
  */
45
- export const Component = () => (name) => makeDescriptor("component", name);
57
+ export const Component = () => ((name, options) => applyComponentOptions(makeDescriptor("component", name), options));
46
58
  /**
47
59
  * Defines a component descriptor that also knows how to validate raw values.
48
60
  *
@@ -56,7 +68,7 @@ export const Component = () => (name) => makeDescriptor("component", name);
56
68
  * const Position = Descriptor.ConstructedComponent(Vector2)("Position")
57
69
  * ```
58
70
  */
59
- export const ConstructedComponent = (constructor) => (name) => makeConstructedDescriptor("component", name, constructor);
71
+ export const ConstructedComponent = (constructor) => (name, options) => applyComponentOptions(makeConstructedDescriptor("component", name, constructor), options);
60
72
  /**
61
73
  * Defines a component descriptor that snapshots skip.
62
74
  *
@@ -68,7 +80,7 @@ export const ConstructedComponent = (constructor) => (name) => makeConstructedDe
68
80
  * const SpriteRef = Descriptor.TransientComponent<{ frame: number }>()("SpriteRef")
69
81
  * ```
70
82
  */
71
- export const TransientComponent = () => (name) => makeTransientDescriptor("component", name);
83
+ export const TransientComponent = () => ((name, options) => applyComponentOptions(makeTransientDescriptor("component", name), options));
72
84
  /**
73
85
  * Defines a marker component: no data, only presence (`[Player, {}]`).
74
86
  *
@@ -132,7 +144,7 @@ export const isEntityState = (descriptor) => "states" in descriptor;
132
144
  * const Score = Descriptor.Resource<number>()("Score")
133
145
  * ```
134
146
  */
135
- export const Resource = () => (name) => makeDescriptor("resource", name);
147
+ export const Resource = () => ((name) => makeDescriptor("resource", name));
136
148
  /**
137
149
  * Defines a resource descriptor that also knows how to validate raw values.
138
150
  */
@@ -146,7 +158,7 @@ export const ConstructedResource = (constructor) => (name) => makeConstructedDes
146
158
  * const DeltaTime = Descriptor.TransientResource<number>()("DeltaTime")
147
159
  * ```
148
160
  */
149
- export const TransientResource = () => (name) => makeTransientDescriptor("resource", name);
161
+ export const TransientResource = () => ((name) => makeTransientDescriptor("resource", name));
150
162
  /**
151
163
  * Defines an event descriptor.
152
164
  *
@@ -165,7 +177,7 @@ export const TransientResource = () => (name) => makeTransientDescriptor("resour
165
177
  * const Hit = Descriptor.Event<{ target: number; amount: number }>()("Hit")
166
178
  * ```
167
179
  */
168
- export const Event = () => (name) => makeDescriptor("event", name);
180
+ export const Event = () => ((name) => makeDescriptor("event", name));
169
181
  /**
170
182
  * Defines a service descriptor.
171
183
  *
@@ -183,7 +195,7 @@ export const Event = () => (name) => makeDescriptor("event", name);
183
195
  * const Logger = Descriptor.Service<{ log: (message: string) => void }>()("Logger")
184
196
  * ```
185
197
  */
186
- export const Service = () => (name) => makeDescriptor("service", name);
198
+ export const Service = () => ((name) => makeDescriptor("service", name));
187
199
  /**
188
200
  * Checks whether one descriptor is transient (skipped by snapshots).
189
201
  */
@@ -246,7 +258,7 @@ export function constructorOf(descriptor) {
246
258
  * `Game.EntityScope(...)` instead when entities only share a lifetime (a
247
259
  * level, a menu) and need no tree, order, or traversal.
248
260
  */
249
- export const Hierarchy = RelationModule.Hierarchy;
261
+ export const Hierarchy = (name, relatedName) => makePair("hierarchy", name, relatedName);
250
262
  /**
251
263
  * Defines a general relationship pair with direct edges and reverse lookups.
252
264
  *
@@ -254,8 +266,8 @@ export const Hierarchy = RelationModule.Hierarchy;
254
266
  * reverse lookup, but not hierarchy-only behavior such as tree traversal or
255
267
  * child reordering.
256
268
  */
257
- export const Relation = RelationModule.Relation;
269
+ export const Relation = (name, relatedName) => makePair("relation", name, relatedName);
258
270
  import * as DecodeModule from "./Decode.js";
259
- import * as RelationModule from "./Relation.js";
271
+ import { makePair } from "./internal/relations.js";
260
272
  import * as ResultModule from "./Result.js";
261
273
  //# sourceMappingURL=Descriptor.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Descriptor.js","sourceRoot":"","sources":["../src/Descriptor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Descriptor.js","sourceRoot":"","sources":["../src/Descriptor.ts"],"names":[],"mappings":"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"}
package/dist/Entity.d.ts CHANGED
@@ -114,7 +114,7 @@ export declare namespace Handle {
114
114
  * Drafts exist before the command queue is flushed. This is the place where the
115
115
  * API can safely carry exact structural information.
116
116
  */
117
- export interface EntityDraft<S extends Schema.Any, out P extends ComponentProof, Root = unknown> {
117
+ export interface EntityDraft<S extends Schema.Any, out P extends ComponentProof, Root = unknown, out Relates = never> {
118
118
  /**
119
119
  * Runtime tag for debugging and pattern matching.
120
120
  */
@@ -139,6 +139,11 @@ export interface EntityDraft<S extends Schema.Any, out P extends ComponentProof,
139
139
  * Staged relationship edges attached to the entity before spawn.
140
140
  */
141
141
  readonly relations: ReadonlyArray<StagedRelation<S, Root>>;
142
+ /**
143
+ * The relations `Game.Command.relate(...)` staged on this draft: spawning
144
+ * it needs them in the system's `Game.System.relates(...)`. Type-level only.
145
+ */
146
+ readonly __relates?: (_: never) => Relates;
142
147
  }
143
148
  /**
144
149
  * One staged component value paired with the descriptor that owns it.
@@ -149,17 +154,25 @@ export type StagedComponent = readonly [Descriptor<"component", string, any>, un
149
154
  *
150
155
  * Query execution is the main source of `EntityRef` values.
151
156
  */
152
- export interface EntityRef<S extends Schema.Any, out P extends ComponentProof, Root = unknown, out Proves = unknown> {
157
+ export interface EntityRef<S extends Schema.Any, out P extends ComponentProof, Root = unknown, in Proves = never, in Lacks = never> {
153
158
  /**
154
159
  * Runtime tag for debugging and pattern matching.
155
160
  */
156
161
  readonly kind: "EntityRef";
157
162
  /**
158
163
  * The component descriptors the query that produced this ref proves (its
159
- * required slots and `with`): what `commands.despawn` checks against the
160
- * system's `despawns` permission. Type-level only.
164
+ * required slots and `with`): what `commands.despawn`, `insert`, and
165
+ * `remove` check. Type-level only. Contravariant on purpose: a ref proving
166
+ * more is a subtype, so a union of refs (`cond ? a.entity : b.entity`)
167
+ * keeps only what both prove.
168
+ */
169
+ readonly __proves?: (_: Proves) => void;
170
+ /**
171
+ * The component descriptors the producing query proves absent (its
172
+ * `without`): what `commands.remove` checks against `Schema.requires`.
173
+ * Type-level only.
161
174
  */
162
- readonly __proves?: (_: never) => Proves;
175
+ readonly __lacks?: (_: Lacks) => void;
163
176
  /**
164
177
  * The schema-bound entity identity.
165
178
  */
@@ -176,13 +189,15 @@ export interface EntityRef<S extends Schema.Any, out P extends ComponentProof, R
176
189
  * `P` tracks readable components and `W` tracks the writable subset. This keeps
177
190
  * mutation capabilities explicit in query results.
178
191
  */
179
- export interface EntityMut<S extends Schema.Any, out P extends ComponentProof, out W extends ComponentProof, Root = unknown, out Proves = unknown> {
192
+ export interface EntityMut<S extends Schema.Any, out P extends ComponentProof, out W extends ComponentProof, Root = unknown, in Proves = never, in Lacks = never> {
180
193
  /**
181
194
  * Runtime tag for debugging and pattern matching.
182
195
  */
183
196
  readonly kind: "EntityMut";
184
197
  /** The component descriptors the producing query proves; see `EntityRef`. */
185
- readonly __proves?: (_: never) => Proves;
198
+ readonly __proves?: (_: Proves) => void;
199
+ /** The component descriptors the producing query proves absent; see `EntityRef`. */
200
+ readonly __lacks?: (_: Lacks) => void;
186
201
  /**
187
202
  * The schema-bound entity identity.
188
203
  */
@@ -1 +1 @@
1
- {"version":3,"file":"Entity.d.ts","sourceRoot":"","sources":["../src/Entity.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Entity.d.ts","sourceRoot":"","sources":["../src/Entity.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"Entity.js","sourceRoot":"","sources":["../src/Entity.ts"],"names":[],"mappings":"AAwCA,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AAyBrC;;GAEG;AACH,MAAM,YAAY,GAAiB,eAAe,CAAA;AAClD,MAAM,kBAAkB,GAAG,qBAA8B,CAAA;AA6JzD;;;;;GAKG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAuC,KAAa,EAAqB,EAAE,CACrG,KAA0B,CAAA;AAE5B;;;;;GAKG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,CAGxB,KAAa,EAAwB,EAAE,CACvC,KAA6B,CAAA;AAU/B;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,CAKpB,MAA6B,EAC7B,OAAgB,EACM,EAAE,CACxB,UAAU,CAAe,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;AAU3E;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAI1B,KAAW,EACX,GAAY,EACZ,OAAgB,EACoC,EAAE;IACtD,OAAO,OAAO,GAAG,KAAK,QAAQ,IAAI,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC;QAChE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAe,GAAG,CAAC,CAAC;QAC/C,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAA;AAC3D,CAAC,CAAA;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,KAAK,GAAG,CACnB,EAAqB,EACrB,KAAQ,EACR,UAAU,GAAmC,EAAE,EAC/C,SAAS,GAA2C,EAAE,EAC7B,EAAE,CAAC,CAAC;IAC7B,IAAI,EAAE,aAAa;IACnB,EAAE;IACF,YAAY,EAAE,SAA4B;IAC1C,KAAK;IACL,UAAU;IACV,SAAS;CACV,CAAC,CAAA;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,GAAG,GAAG,CACjB,EAAqB,EACrB,KAAQ,EACe,EAAE,CAAC,CAAC;IAC3B,IAAI,EAAE,WAAW;IACjB,EAAE;IACF,YAAY,EAAE,SAA4B;IAC1C,KAAK;CACN,CAAC,CAAA;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,GAAG,GAAG,CACjB,EAAqB,EACrB,KAAQ,EACR,QAAW,EACe,EAAE,CAAC,CAAC;IAC9B,IAAI,EAAE,WAAW;IACjB,EAAE;IACF,YAAY,EAAE,SAA4B;IAC1C,KAAK;IACL,QAAQ;CACT,CAAC,CAAA"}
1
+ {"version":3,"file":"Entity.js","sourceRoot":"","sources":["../src/Entity.ts"],"names":[],"mappings":"AAwCA,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AAyBrC;;GAEG;AACH,MAAM,YAAY,GAAiB,eAAe,CAAA;AAClD,MAAM,kBAAkB,GAAG,qBAA8B,CAAA;AA6KzD;;;;;GAKG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAuC,KAAa,EAAqB,EAAE,CACrG,KAA0B,CAAA;AAE5B;;;;;GAKG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,CAGxB,KAAa,EAAwB,EAAE,CACvC,KAA6B,CAAA;AAU/B;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,CAKpB,MAA6B,EAC7B,OAAgB,EACM,EAAE,CACxB,UAAU,CAAe,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;AAU3E;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAI1B,KAAW,EACX,GAAY,EACZ,OAAgB,EACoC,EAAE;IACtD,OAAO,OAAO,GAAG,KAAK,QAAQ,IAAI,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC;QAChE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAe,GAAG,CAAC,CAAC;QAC/C,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAA;AAC3D,CAAC,CAAA;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,KAAK,GAAG,CACnB,EAAqB,EACrB,KAAQ,EACR,UAAU,GAAmC,EAAE,EAC/C,SAAS,GAA2C,EAAE,EAC7B,EAAE,CAAC,CAAC;IAC7B,IAAI,EAAE,aAAa;IACnB,EAAE;IACF,YAAY,EAAE,SAA4B;IAC1C,KAAK;IACL,UAAU;IACV,SAAS;CACV,CAAC,CAAA;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,GAAG,GAAG,CACjB,EAAqB,EACrB,KAAQ,EACe,EAAE,CAAC,CAAC;IAC3B,IAAI,EAAE,WAAW;IACjB,EAAE;IACF,YAAY,EAAE,SAA4B;IAC1C,KAAK;CACN,CAAC,CAAA;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,GAAG,GAAG,CACjB,EAAqB,EACrB,KAAQ,EACR,QAAW,EACe,EAAE,CAAC,CAAC;IAC9B,IAAI,EAAE,WAAW;IACjB,EAAE;IACF,YAAY,EAAE,SAA4B;IAC1C,KAAK;IACL,QAAQ;CACT,CAAC,CAAA"}
@@ -13,6 +13,11 @@
13
13
  * parent-child tree: ordered children, `lookup.parent` / `descendants`
14
14
  * traversal, and children despawned with their parent.
15
15
  *
16
+ * A scope whose lifetime is a game state declares it:
17
+ * `Game.EntityScope(name, { despawnOnExit: [Flow, "Playing"] })` despawns
18
+ * every member when `applyStateTransitions(...)` commits that state change,
19
+ * with no system, permission, or marker to place.
20
+ *
16
21
  * @module EntityScope
17
22
  * @docGroup core
18
23
  */
@@ -21,8 +26,22 @@ export interface EntityScope<out Name extends string = string, out Root = unknow
21
26
  readonly kind: "entityScope";
22
27
  readonly name: Name;
23
28
  readonly key: symbol;
29
+ /** State changes that despawn every member, applied by `applyStateTransitions(...)`. */
30
+ readonly despawnOn: ReadonlyArray<Trigger>;
24
31
  readonly __schemaRoot?: Root | undefined;
25
32
  }
33
+ /**
34
+ * One state change that despawns a scope: leaving (`exit`) or entering
35
+ * (`enter`) `state` of `machine`.
36
+ */
37
+ export interface Trigger {
38
+ readonly phase: "enter" | "exit";
39
+ readonly machine: {
40
+ readonly key: symbol;
41
+ readonly name: string;
42
+ };
43
+ readonly state: string | number;
44
+ }
26
45
  /** Type-level helpers for entity scopes. */
27
46
  export declare namespace EntityScope {
28
47
  type Any = EntityScope<string, any>;
@@ -35,7 +54,7 @@ export declare namespace EntityScope {
35
54
  * Normal game code should use `Game.EntityScope(...)` so the returned token is
36
55
  * branded to that game's root.
37
56
  */
38
- export declare const make: <const Name extends string, Root = unknown>(name: Name) => EntityScope<Name, Root>;
57
+ export declare const make: <const Name extends string, Root = unknown>(name: Name, despawnOn?: ReadonlyArray<Trigger>) => EntityScope<Name, Root>;
39
58
  /** The storage key of the scope named `name`: the same for every scope value of that name. */
40
59
  export declare const keyOf: (name: string) => symbol;
41
60
  /** The name of the scope behind a storage key made by {@link keyOf}. */
@@ -1 +1 @@
1
- {"version":3,"file":"EntityScope.d.ts","sourceRoot":"","sources":["../src/EntityScope.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,mEAAmE;AACnE,MAAM,WAAW,WAAW,CAC1B,GAAG,CAAC,IAAI,SAAS,MAAM,GAAG,MAAM,EAChC,GAAG,CAAC,IAAI,GAAG,OAAO;IAElB,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAA;IAC5B,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAA;IACnB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,YAAY,CAAC,EAAE,IAAI,GAAG,SAAS,CAAA;CACzC;AAED,4CAA4C;AAC5C,yBAAiB,WAAW,CAAC;IAC3B,KAAY,GAAG,GAAG,WAAW,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAC1C,KAAY,IAAI,CAAC,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC,MAAM,CAAC,CAAA;IAC3C,KAAY,IAAI,CAAC,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,WAAW,CAAC,MAAM,EAAE,MAAM,IAAI,CAAC,GAAG,IAAI,GAAG,KAAK,CAAA;CAC3F;AAED;;;;;GAKG;AACH,eAAO,MAAM,IAAI,GAAI,KAAK,CAAC,IAAI,SAAS,MAAM,EAAE,IAAI,GAAG,OAAO,QACtD,IAAI,KACT,WAAW,CAAC,IAAI,EAAE,IAAI,CAIvB,CAAA;AAIF,8FAA8F;AAC9F,eAAO,MAAM,KAAK,SAAU,MAAM,KAAG,MAA2C,CAAA;AAEhF,wEAAwE;AACxE,eAAO,MAAM,MAAM,QAAS,MAAM,KAAG,MAAM,GAAG,SAG7C,CAAA"}
1
+ {"version":3,"file":"EntityScope.d.ts","sourceRoot":"","sources":["../src/EntityScope.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,mEAAmE;AACnE,MAAM,WAAW,WAAW,CAC1B,GAAG,CAAC,IAAI,SAAS,MAAM,GAAG,MAAM,EAChC,GAAG,CAAC,IAAI,GAAG,OAAO;IAElB,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAA;IAC5B,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAA;IACnB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,wFAAwF;IACxF,QAAQ,CAAC,SAAS,EAAE,aAAa,CAAC,OAAO,CAAC,CAAA;IAC1C,QAAQ,CAAC,YAAY,CAAC,EAAE,IAAI,GAAG,SAAS,CAAA;CACzC;AAED;;;GAGG;AACH,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAAA;IAChC,QAAQ,CAAC,OAAO,EAAE;QAAE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAA;IACjE,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAA;CAChC;AAED,4CAA4C;AAC5C,yBAAiB,WAAW,CAAC;IAC3B,KAAY,GAAG,GAAG,WAAW,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAC1C,KAAY,IAAI,CAAC,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC,MAAM,CAAC,CAAA;IAC3C,KAAY,IAAI,CAAC,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,WAAW,CAAC,MAAM,EAAE,MAAM,IAAI,CAAC,GAAG,IAAI,GAAG,KAAK,CAAA;CAC3F;AAED;;;;;GAKG;AACH,eAAO,MAAM,IAAI,GAAI,KAAK,CAAC,IAAI,SAAS,MAAM,EAAE,IAAI,GAAG,OAAO,QACtD,IAAI,cACC,aAAa,CAAC,OAAO,CAAC,KAChC,WAAW,CAAC,IAAI,EAAE,IAAI,CAKvB,CAAA;AAIF,8FAA8F;AAC9F,eAAO,MAAM,KAAK,SAAU,MAAM,KAAG,MAA2C,CAAA;AAEhF,wEAAwE;AACxE,eAAO,MAAM,MAAM,QAAS,MAAM,KAAG,MAAM,GAAG,SAG7C,CAAA"}
@@ -13,6 +13,11 @@
13
13
  * parent-child tree: ordered children, `lookup.parent` / `descendants`
14
14
  * traversal, and children despawned with their parent.
15
15
  *
16
+ * A scope whose lifetime is a game state declares it:
17
+ * `Game.EntityScope(name, { despawnOnExit: [Flow, "Playing"] })` despawns
18
+ * every member when `applyStateTransitions(...)` commits that state change,
19
+ * with no system, permission, or marker to place.
20
+ *
16
21
  * @module EntityScope
17
22
  * @docGroup core
18
23
  */
@@ -22,10 +27,11 @@
22
27
  * Normal game code should use `Game.EntityScope(...)` so the returned token is
23
28
  * branded to that game's root.
24
29
  */
25
- export const make = (name) => ({
30
+ export const make = (name, despawnOn = []) => ({
26
31
  kind: "entityScope",
27
32
  name,
28
- key: keyOf(name)
33
+ key: keyOf(name),
34
+ despawnOn
29
35
  });
30
36
  const keyPrefix = "ritmo/entityScope/";
31
37
  /** The storage key of the scope named `name`: the same for every scope value of that name. */
@@ -1 +1 @@
1
- {"version":3,"file":"EntityScope.js","sourceRoot":"","sources":["../src/EntityScope.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAoBH;;;;;GAKG;AACH,MAAM,CAAC,MAAM,IAAI,GAAG,CAClB,IAAU,EACe,EAAE,CAAC,CAAC;IAC7B,IAAI,EAAE,aAAa;IACnB,IAAI;IACJ,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC;CACjB,CAAC,CAAA;AAEF,MAAM,SAAS,GAAG,oBAAoB,CAAA;AAEtC,8FAA8F;AAC9F,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,IAAY,EAAU,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,SAAS,GAAG,IAAI,EAAE,CAAC,CAAA;AAEhF,wEAAwE;AACxE,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,GAAW,EAAsB,EAAE;IACxD,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;IACtC,OAAO,WAAW,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;AAC7F,CAAC,CAAA"}
1
+ {"version":3,"file":"EntityScope.js","sourceRoot":"","sources":["../src/EntityScope.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAgCH;;;;;GAKG;AACH,MAAM,CAAC,MAAM,IAAI,GAAG,CAClB,IAAU,EACV,SAAS,GAA2B,EAAE,EACb,EAAE,CAAC,CAAC;IAC7B,IAAI,EAAE,aAAa;IACnB,IAAI;IACJ,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC;IAChB,SAAS;CACV,CAAC,CAAA;AAEF,MAAM,SAAS,GAAG,oBAAoB,CAAA;AAEtC,8FAA8F;AAC9F,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,IAAY,EAAU,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,SAAS,GAAG,IAAI,EAAE,CAAC,CAAA;AAEhF,wEAAwE;AACxE,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,GAAW,EAAsB,EAAE;IACxD,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;IACtC,OAAO,WAAW,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;AAC7F,CAAC,CAAA"}
@@ -0,0 +1,106 @@
1
+ /**
2
+ * Deterministic fixed-step timing for any host: browsers, native shells,
3
+ * desktop runtimes, and headless tests.
4
+ *
5
+ * The loop owns the timing policy that is easy to get subtly wrong in every
6
+ * game: frame clamping, catch-up limits, interpolation, cancellation, and
7
+ * typed update failures. It does not know about an ECS runtime, a renderer,
8
+ * or a platform: frames arrive through a `TickSource` that the host supplies.
9
+ * Use a platform adapter such as `BrowserTickSource.make(window)` from
10
+ * `@typeonce/ritmo-browser`, or wrap a renderer's own ticker with `source`.
11
+ *
12
+ * @example
13
+ * ```ts
14
+ * const loop = FixedLoop.start({
15
+ * source: BrowserTickSource.make(window),
16
+ * step: Clock.hz(60),
17
+ * maxFrameSeconds: 0.25,
18
+ * maxStepsPerFrame: 5,
19
+ * update: () => runtime.tick(update),
20
+ * render: (frame) => draw(frame.alpha),
21
+ * onFailure: (failure) => console.error(failure)
22
+ * })
23
+ * ```
24
+ *
25
+ * @module FixedLoop
26
+ * @docGroup runtime
27
+ */
28
+ import type * as Clock from "./Clock.ts";
29
+ import * as Result from "./Result.ts";
30
+ /** One host frame: milliseconds elapsed since the previous one. */
31
+ export interface Tick {
32
+ readonly deltaMS: number;
33
+ }
34
+ /** A stoppable host subscription. Calling `stop` more than once is safe. */
35
+ export interface Subscription {
36
+ stop(): void;
37
+ }
38
+ /**
39
+ * Where host frames come from. Implemented by platform adapters
40
+ * (`BrowserTickSource.make(window)`), by `source` around a renderer's ticker,
41
+ * and by deterministic tests.
42
+ */
43
+ export interface TickSource<TTick extends Tick = Tick> {
44
+ subscribe(onTick: (tick: TTick) => void): Subscription;
45
+ }
46
+ /** Validated fixed-step timing policy. */
47
+ export interface Options {
48
+ /**
49
+ * The fixed step every update advances (`Clock.hz(60)`): the same value
50
+ * the game's clock resource runs at, so the loop and the clock agree.
51
+ */
52
+ readonly step: Clock.Step;
53
+ /** Maximum host-frame duration admitted into the accumulator. */
54
+ readonly maxFrameSeconds: number;
55
+ /** Maximum number of simulation updates performed for one host frame. */
56
+ readonly maxStepsPerFrame: number;
57
+ }
58
+ /** Configuration error returned before a loop subscribes to its host. */
59
+ export interface InvalidOptions {
60
+ readonly kind: "InvalidFixedLoopOptions";
61
+ readonly field: keyof Options;
62
+ readonly reason: "mustBeFiniteAndPositive" | "mustBePositiveInteger";
63
+ readonly value: number;
64
+ }
65
+ /** Data passed to the renderer after all fixed updates for one host frame. */
66
+ export interface Frame {
67
+ /** Clamped time admitted for this host frame. */
68
+ readonly elapsedSeconds: number;
69
+ /** Number of fixed updates completed for this host frame. */
70
+ readonly fixedSteps: number;
71
+ /** Remaining accumulator fraction in the range `[0, 1)`. */
72
+ readonly alpha: number;
73
+ /** Time discarded by frame clamping or the catch-up limit. */
74
+ readonly droppedSeconds: number;
75
+ }
76
+ /** Failure delivered by an active loop before it stops itself. */
77
+ export type Failure<UpdateError> = {
78
+ readonly kind: "InvalidTickDelta";
79
+ readonly deltaMS: number;
80
+ } | {
81
+ readonly kind: "UpdateFailure";
82
+ readonly error: UpdateError;
83
+ };
84
+ /** A running fixed-step driver. */
85
+ export interface Driver extends Subscription {
86
+ /** Clears accumulated partial time without removing the host subscription. */
87
+ reset(): void;
88
+ }
89
+ /** Input for a fixed-step driver. */
90
+ export interface StartOptions<TTick extends Tick, UpdateError> extends Options {
91
+ readonly source: TickSource<TTick>;
92
+ readonly update: (stepSeconds: number) => Result.Result<void, UpdateError>;
93
+ readonly render: (frame: Frame) => void;
94
+ readonly onFailure: (failure: Failure<UpdateError>) => void;
95
+ }
96
+ /** Wraps a host-specific subscription function in the canonical source type. */
97
+ export declare const source: <TTick extends Tick>(subscribe: TickSource<TTick>["subscribe"]) => TickSource<TTick>;
98
+ /**
99
+ * Starts a fixed-step loop after validating its timing policy.
100
+ *
101
+ * Update failures and malformed host ticks are delivered to `onFailure`, then
102
+ * the driver stops. Render defects are deliberately not caught: they are
103
+ * programmer defects, not expected game outcomes.
104
+ */
105
+ export declare const start: <TTick extends Tick, UpdateError>(options: StartOptions<TTick, UpdateError>) => Result.Result<Driver, InvalidOptions>;
106
+ //# sourceMappingURL=FixedLoop.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FixedLoop.d.ts","sourceRoot":"","sources":["../src/FixedLoop.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,OAAO,KAAK,KAAK,KAAK,MAAM,YAAY,CAAA;AACxC,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AAErC,mEAAmE;AACnE,MAAM,WAAW,IAAI;IACnB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CACzB;AAED,4EAA4E;AAC5E,MAAM,WAAW,YAAY;IAC3B,IAAI,IAAI,IAAI,CAAA;CACb;AAED;;;;GAIG;AACH,MAAM,WAAW,UAAU,CAAC,KAAK,SAAS,IAAI,GAAG,IAAI;IACnD,SAAS,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK,IAAI,GAAG,YAAY,CAAA;CACvD;AAED,0CAA0C;AAC1C,MAAM,WAAW,OAAO;IACtB;;;OAGG;IACH,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAA;IACzB,iEAAiE;IACjE,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAA;IAChC,yEAAyE;IACzE,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAA;CAClC;AAED,yEAAyE;AACzE,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAE,yBAAyB,CAAA;IACxC,QAAQ,CAAC,KAAK,EAAE,MAAM,OAAO,CAAA;IAC7B,QAAQ,CAAC,MAAM,EAAE,yBAAyB,GAAG,uBAAuB,CAAA;IACpE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CACvB;AAED,8EAA8E;AAC9E,MAAM,WAAW,KAAK;IACpB,iDAAiD;IACjD,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;IAC/B,6DAA6D;IAC7D,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,4DAA4D;IAC5D,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,8DAA8D;IAC9D,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;CAChC;AAED,kEAAkE;AAClE,MAAM,MAAM,OAAO,CAAC,WAAW,IAC3B;IACE,QAAQ,CAAC,IAAI,EAAE,kBAAkB,CAAA;IACjC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CACzB,GACD;IACE,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAA;IAC9B,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAA;CAC5B,CAAA;AAEL,mCAAmC;AACnC,MAAM,WAAW,MAAO,SAAQ,YAAY;IAC1C,8EAA8E;IAC9E,KAAK,IAAI,IAAI,CAAA;CACd;AAED,qCAAqC;AACrC,MAAM,WAAW,YAAY,CAAC,KAAK,SAAS,IAAI,EAAE,WAAW,CAAE,SAAQ,OAAO;IAC5E,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC,KAAK,CAAC,CAAA;IAClC,QAAQ,CAAC,MAAM,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,WAAW,CAAC,CAAA;IAC1E,QAAQ,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAA;IACvC,QAAQ,CAAC,SAAS,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,WAAW,CAAC,KAAK,IAAI,CAAA;CAC5D;AAED,gFAAgF;AAChF,eAAO,MAAM,MAAM,GAAI,KAAK,SAAS,IAAI,aAC5B,UAAU,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,KACxC,UAAU,CAAC,KAAK,CAAoB,CAAA;AAyBvC;;;;;;GAMG;AACH,eAAO,MAAM,KAAK,GAAI,KAAK,SAAS,IAAI,EAAE,WAAW,WAC1C,YAAY,CAAC,KAAK,EAAE,WAAW,CAAC,KACxC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,cAAc,CAyEtC,CAAA"}