@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.
- package/README.md +3 -2
- package/dist/Clock.d.ts +19 -4
- package/dist/Clock.d.ts.map +1 -1
- package/dist/Clock.js +18 -2
- package/dist/Clock.js.map +1 -1
- package/dist/Command.d.ts +181 -40
- package/dist/Command.d.ts.map +1 -1
- package/dist/Command.js +31 -11
- package/dist/Command.js.map +1 -1
- package/dist/Condition.d.ts +12 -1
- package/dist/Condition.d.ts.map +1 -1
- package/dist/Condition.js.map +1 -1
- package/dist/Debug.d.ts +127 -13
- package/dist/Debug.d.ts.map +1 -1
- package/dist/Descriptor.d.ts +61 -10
- package/dist/Descriptor.d.ts.map +1 -1
- package/dist/Descriptor.js +22 -10
- package/dist/Descriptor.js.map +1 -1
- package/dist/Entity.d.ts +22 -7
- package/dist/Entity.d.ts.map +1 -1
- package/dist/Entity.js.map +1 -1
- package/dist/EntityScope.d.ts +20 -1
- package/dist/EntityScope.d.ts.map +1 -1
- package/dist/EntityScope.js +8 -2
- package/dist/EntityScope.js.map +1 -1
- package/dist/FixedLoop.d.ts +106 -0
- package/dist/FixedLoop.d.ts.map +1 -0
- package/dist/FixedLoop.js +97 -0
- package/dist/FixedLoop.js.map +1 -0
- package/dist/HostClock.d.ts +1 -1
- package/dist/HostClock.d.ts.map +1 -1
- package/dist/HostClock.js +2 -1
- package/dist/HostClock.js.map +1 -1
- package/dist/Machine.d.ts +59 -34
- package/dist/Machine.d.ts.map +1 -1
- package/dist/Machine.js +10 -3
- package/dist/Machine.js.map +1 -1
- package/dist/Query.d.ts +100 -14
- package/dist/Query.d.ts.map +1 -1
- package/dist/Query.js +34 -5
- package/dist/Query.js.map +1 -1
- package/dist/Relation.d.ts +5 -14
- package/dist/Relation.d.ts.map +1 -1
- package/dist/Relation.js +0 -32
- package/dist/Relation.js.map +1 -1
- package/dist/Runtime.d.ts +61 -15
- package/dist/Runtime.d.ts.map +1 -1
- package/dist/Runtime.js +594 -70
- package/dist/Runtime.js.map +1 -1
- package/dist/Schedule.d.ts +24 -15
- package/dist/Schedule.d.ts.map +1 -1
- package/dist/Schedule.js +2 -1
- package/dist/Schedule.js.map +1 -1
- package/dist/Schema.d.ts +233 -48
- package/dist/Schema.d.ts.map +1 -1
- package/dist/Schema.js +33 -7
- package/dist/Schema.js.map +1 -1
- package/dist/Snapshot.d.ts +90 -1
- package/dist/Snapshot.d.ts.map +1 -1
- package/dist/Snapshot.js +42 -1
- package/dist/Snapshot.js.map +1 -1
- package/dist/System.d.ts +132 -31
- package/dist/System.d.ts.map +1 -1
- package/dist/System.js +32 -0
- package/dist/System.js.map +1 -1
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/dist/internal/cells.d.ts +2 -0
- package/dist/internal/cells.d.ts.map +1 -1
- package/dist/internal/cells.js +34 -8
- package/dist/internal/cells.js.map +1 -1
- package/dist/internal/debug.d.ts +10 -0
- package/dist/internal/debug.d.ts.map +1 -1
- package/dist/internal/debug.js +171 -12
- package/dist/internal/debug.js.map +1 -1
- package/dist/internal/equal.d.ts +8 -0
- package/dist/internal/equal.d.ts.map +1 -0
- package/dist/internal/equal.js +38 -0
- package/dist/internal/equal.js.map +1 -0
- package/dist/internal/fragments.d.ts +2 -6
- package/dist/internal/fragments.d.ts.map +1 -1
- package/dist/internal/fragments.js +36 -3
- package/dist/internal/fragments.js.map +1 -1
- package/dist/internal/game.d.ts +2 -0
- package/dist/internal/game.d.ts.map +1 -1
- package/dist/internal/game.js +48 -7
- package/dist/internal/game.js.map +1 -1
- package/dist/internal/order.d.ts.map +1 -1
- package/dist/internal/order.js +4 -2
- package/dist/internal/order.js.map +1 -1
- package/dist/internal/queries.d.ts.map +1 -1
- package/dist/internal/queries.js +57 -26
- package/dist/internal/queries.js.map +1 -1
- package/dist/internal/relations.d.ts +10 -0
- package/dist/internal/relations.d.ts.map +1 -0
- package/dist/internal/relations.js +32 -0
- package/dist/internal/relations.js.map +1 -0
- package/dist/internal/requirements.d.ts +26 -0
- package/dist/internal/requirements.d.ts.map +1 -0
- package/dist/internal/requirements.js +46 -0
- package/dist/internal/requirements.js.map +1 -0
- package/dist/internal/streams.d.ts +2 -0
- package/dist/internal/streams.d.ts.map +1 -1
- package/dist/internal/streams.js +10 -0
- package/dist/internal/streams.js.map +1 -1
- package/dist/internal/world.d.ts +7 -1
- package/dist/internal/world.d.ts.map +1 -1
- package/dist/internal/world.js +53 -3
- package/dist/internal/world.js.map +1 -1
- package/package.json +1 -1
- package/src/Clock.ts +29 -4
- package/src/Command.ts +281 -67
- package/src/Condition.ts +17 -1
- package/src/Debug.ts +124 -15
- package/src/Descriptor.ts +92 -21
- package/src/Entity.ts +23 -7
- package/src/EntityScope.ts +21 -2
- package/src/FixedLoop.ts +218 -0
- package/src/HostClock.ts +2 -1
- package/src/Machine.ts +72 -35
- package/src/Query.ts +118 -17
- package/src/Relation.ts +5 -67
- package/src/Runtime.ts +659 -85
- package/src/Schedule.ts +31 -19
- package/src/Schema.ts +297 -57
- package/src/Snapshot.ts +94 -2
- package/src/System.ts +151 -29
- package/src/index.ts +4 -0
- package/src/internal/cells.ts +42 -10
- package/src/internal/debug.ts +179 -14
- package/src/internal/equal.ts +31 -0
- package/src/internal/fragments.ts +35 -5
- package/src/internal/game.ts +69 -7
- package/src/internal/order.ts +8 -4
- package/src/internal/queries.ts +62 -12
- package/src/internal/relations.ts +52 -0
- package/src/internal/requirements.ts +71 -0
- package/src/internal/streams.ts +11 -0
- package/src/internal/world.ts +60 -4
package/src/Relation.ts
CHANGED
|
@@ -10,11 +10,9 @@
|
|
|
10
10
|
*
|
|
11
11
|
* @example
|
|
12
12
|
* ```ts
|
|
13
|
-
* //
|
|
14
|
-
* const
|
|
15
|
-
*
|
|
16
|
-
* // Model another directed gameplay relationship.
|
|
17
|
-
* const Target = Relation.Relation("Target", "TargetedBy")
|
|
13
|
+
* // Relations are defined with Descriptor.Hierarchy and Descriptor.Relation.
|
|
14
|
+
* const { relation: ChildOf } = Descriptor.Hierarchy("ChildOf", "Children")
|
|
15
|
+
* const { relation: Targeting } = Descriptor.Relation("Targeting", "TargetedBy")
|
|
18
16
|
* ```
|
|
19
17
|
*
|
|
20
18
|
* @module Relation
|
|
@@ -44,7 +42,8 @@ const relationTypeId: RelationTypeId = "~ritmo/Relation"
|
|
|
44
42
|
|
|
45
43
|
export type RelationKind = "hierarchy" | "relation"
|
|
46
44
|
|
|
47
|
-
|
|
45
|
+
/** The nominal brand tying a relation to its reverse side. */
|
|
46
|
+
export type PairBrand<Name extends string, RelatedName extends string, Kind extends RelationKind> = {
|
|
48
47
|
readonly relation: Name
|
|
49
48
|
readonly related: RelatedName
|
|
50
49
|
readonly kind: Kind
|
|
@@ -281,67 +280,6 @@ export const mutationFailure = <
|
|
|
281
280
|
error
|
|
282
281
|
})
|
|
283
282
|
|
|
284
|
-
const makePair = <
|
|
285
|
-
const Name extends string,
|
|
286
|
-
const RelatedName extends string,
|
|
287
|
-
const Kind extends RelationKind
|
|
288
|
-
>(
|
|
289
|
-
kind: Kind,
|
|
290
|
-
name: Name,
|
|
291
|
-
relatedName: RelatedName
|
|
292
|
-
): {
|
|
293
|
-
readonly relation: RelationDefinition<Name, RelatedName, Kind, PairBrand<Name, RelatedName, Kind>>
|
|
294
|
-
readonly related: RelatedDefinition<RelatedName, Name, Kind, PairBrand<Name, RelatedName, Kind>>
|
|
295
|
-
} => {
|
|
296
|
-
type Pair = PairBrand<Name, RelatedName, Kind>
|
|
297
|
-
const related = {
|
|
298
|
-
kind: "related",
|
|
299
|
-
relatedName,
|
|
300
|
-
relationName: name,
|
|
301
|
-
key: Symbol.for(`ritmo/related/${name}`),
|
|
302
|
-
relationKind: kind,
|
|
303
|
-
[relationTypeId]: {
|
|
304
|
-
_Pair: (_: never) => undefined as unknown as Pair
|
|
305
|
-
}
|
|
306
|
-
} as RelatedDefinition<RelatedName, Name, Kind, Pair>
|
|
307
|
-
|
|
308
|
-
const relation = {
|
|
309
|
-
kind: "relation",
|
|
310
|
-
name,
|
|
311
|
-
relatedName,
|
|
312
|
-
key: Symbol.for(`ritmo/relation/${name}`),
|
|
313
|
-
relationKind: kind,
|
|
314
|
-
linkedDespawn: kind === "hierarchy",
|
|
315
|
-
allowSelf: false,
|
|
316
|
-
ordered: kind === "hierarchy",
|
|
317
|
-
related,
|
|
318
|
-
[relationTypeId]: {
|
|
319
|
-
_Pair: (_: never) => undefined as unknown as Pair
|
|
320
|
-
}
|
|
321
|
-
} as RelationDefinition<Name, RelatedName, Kind, Pair>
|
|
322
|
-
|
|
323
|
-
return {
|
|
324
|
-
relation,
|
|
325
|
-
related
|
|
326
|
-
}
|
|
327
|
-
}
|
|
328
|
-
|
|
329
|
-
export const Hierarchy = <
|
|
330
|
-
const Name extends string,
|
|
331
|
-
const RelatedName extends string
|
|
332
|
-
>(
|
|
333
|
-
name: Name,
|
|
334
|
-
relatedName: RelatedName
|
|
335
|
-
) => makePair("hierarchy", name, relatedName)
|
|
336
|
-
|
|
337
|
-
export const Relation = <
|
|
338
|
-
const Name extends string,
|
|
339
|
-
const RelatedName extends string
|
|
340
|
-
>(
|
|
341
|
-
name: Name,
|
|
342
|
-
relatedName: RelatedName
|
|
343
|
-
) => makePair("relation", name, relatedName)
|
|
344
|
-
|
|
345
283
|
export interface RelationReadAccess<
|
|
346
284
|
R extends Relation.Any,
|
|
347
285
|
S extends Schema.Any,
|