iris-ecs 0.0.2 → 0.0.3
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 +2 -2
- package/dist/entity.d.ts +3 -2
- package/dist/entity.d.ts.map +1 -1
- package/dist/entity.js +7 -7
- package/dist/entity.js.map +1 -1
- package/dist/error.d.ts +129 -0
- package/dist/error.d.ts.map +1 -0
- package/dist/error.js +150 -0
- package/dist/error.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/dist/name.d.ts +2 -1
- package/dist/name.d.ts.map +1 -1
- package/dist/name.js +5 -7
- package/dist/name.js.map +1 -1
- package/dist/query.d.ts +1 -1
- package/dist/query.d.ts.map +1 -1
- package/dist/query.js +3 -4
- package/dist/query.js.map +1 -1
- package/dist/registry.d.ts +3 -3
- package/dist/registry.d.ts.map +1 -1
- package/dist/registry.js +7 -12
- package/dist/registry.js.map +1 -1
- package/dist/relation.d.ts.map +1 -1
- package/dist/relation.js +2 -1
- package/dist/relation.js.map +1 -1
- package/dist/scheduler.d.ts.map +1 -1
- package/dist/scheduler.js +18 -21
- package/dist/scheduler.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -468,7 +468,7 @@ Without constraints, systems run in registration order. Use arrays for multiple
|
|
|
468
468
|
Systems are grouped into **schedules** -- named execution phases. The default pipeline runs these schedules every frame:
|
|
469
469
|
|
|
470
470
|
```
|
|
471
|
-
First
|
|
471
|
+
First -> PreUpdate -> Update -> PostUpdate -> Last
|
|
472
472
|
```
|
|
473
473
|
|
|
474
474
|
`Update` is the default schedule. Assign systems to other phases based on when they should run:
|
|
@@ -511,7 +511,7 @@ const Physics = defineSchedule("Physics");
|
|
|
511
511
|
insertScheduleAfter(world, Physics, PreUpdate);
|
|
512
512
|
addSystem(world, gravitySystem, { schedule: Physics });
|
|
513
513
|
|
|
514
|
-
// Pipeline is now: First
|
|
514
|
+
// Pipeline is now: First -> PreUpdate -> Physics -> Update -> PostUpdate -> Last
|
|
515
515
|
```
|
|
516
516
|
|
|
517
517
|
#### Running the World
|
package/dist/entity.d.ts
CHANGED
|
@@ -35,7 +35,8 @@ export type EntityMeta = {
|
|
|
35
35
|
* @param world - World instance
|
|
36
36
|
* @param entityId - Entity or component ID
|
|
37
37
|
* @returns Entity metadata
|
|
38
|
-
* @throws {
|
|
38
|
+
* @throws {NotFound} If entity not registered (ENTITY_TYPE)
|
|
39
|
+
* @throws {InvalidState} If unknown entity type
|
|
39
40
|
*
|
|
40
41
|
* @example
|
|
41
42
|
* ```typescript
|
|
@@ -49,7 +50,7 @@ export declare function ensureEntity(world: World, entityId: EntityId): EntityMe
|
|
|
49
50
|
*
|
|
50
51
|
* @param world - World instance
|
|
51
52
|
* @returns Encoded entity ID
|
|
52
|
-
* @throws {
|
|
53
|
+
* @throws {LimitExceeded} If entity limit (1,048,576) exceeded
|
|
53
54
|
*
|
|
54
55
|
* @example
|
|
55
56
|
* ```typescript
|
package/dist/entity.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entity.d.ts","sourceRoot":"","sources":["../src/entity.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAGhD,OAAO,KAAK,EAAa,MAAM,EAAE,QAAQ,EAAY,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"entity.d.ts","sourceRoot":"","sources":["../src/entity.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAGhD,OAAO,KAAK,EAAa,MAAM,EAAE,QAAQ,EAAY,MAAM,eAAe,CAAC;AAkB3E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAMxC;;;;GAIG;AACH,MAAM,MAAM,UAAU,GAAG;IACvB;;OAEG;IACH,SAAS,EAAE,SAAS,CAAC;IAErB;;OAEG;IACH,GAAG,EAAE,MAAM,CAAC;IAEZ;;OAEG;IACH,OAAO,EAAE,SAAS,EAAE,CAAC;IAErB;;OAEG;IACH,MAAM,CAAC,EAAE,YAAY,CAAC;IAEtB;;OAEG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB,CAAC;AA0CF;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,GAAG,UAAU,CAkDzE;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,CAOjD;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,CA0CpE;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,GAAG,OAAO,CAErE;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,SAAS,GAAG,IAAI,CAkBlG;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,GAAG,IAAI,CAOxE;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,GAAG,IAAI,CAU3E"}
|
package/dist/entity.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { addEntityToArchetype, removeEntityFromArchetypeByRow, transferEntityToArchetypeByRow } from "./archetype.js";
|
|
2
2
|
import { addComponent, cascadeRemoveComponent } from "./component.js";
|
|
3
3
|
import { COMPONENT_TYPE, ENTITY_TYPE, encodeEntity, extractId, extractMeta, extractType, ID_MASK_8, ID_MASK_20, isPair, RELATIONSHIP_TYPE, TAG_TYPE, } from "./encoding.js";
|
|
4
|
+
import { assert, InvalidState, LimitExceeded, NotFound } from "./error.js";
|
|
4
5
|
import { fireObserverEvent } from "./observer.js";
|
|
5
6
|
import { Exclusive, OnDeleteTarget } from "./registry.js";
|
|
6
7
|
import { cleanupPairsTargetingEntity, getPairRelation } from "./relation.js";
|
|
@@ -16,9 +17,7 @@ function allocateEntityId(world) {
|
|
|
16
17
|
return encodeEntity(rawId, generation);
|
|
17
18
|
}
|
|
18
19
|
const newRawId = world.entities.nextId++;
|
|
19
|
-
|
|
20
|
-
throw new RangeError(`Entity ID limit exceeded: cannot allocate ID ${newRawId} (max ${ID_MASK_20})`);
|
|
21
|
-
}
|
|
20
|
+
assert(newRawId <= ID_MASK_20, LimitExceeded, { resource: "Entity", max: ID_MASK_20, id: newRawId });
|
|
22
21
|
world.entities.generations.set(newRawId, 0);
|
|
23
22
|
return encodeEntity(newRawId, 0);
|
|
24
23
|
}
|
|
@@ -44,7 +43,8 @@ function registerEntity(world, entityId, schema) {
|
|
|
44
43
|
* @param world - World instance
|
|
45
44
|
* @param entityId - Entity or component ID
|
|
46
45
|
* @returns Entity metadata
|
|
47
|
-
* @throws {
|
|
46
|
+
* @throws {NotFound} If entity not registered (ENTITY_TYPE)
|
|
47
|
+
* @throws {InvalidState} If unknown entity type
|
|
48
48
|
*
|
|
49
49
|
* @example
|
|
50
50
|
* ```typescript
|
|
@@ -85,10 +85,10 @@ export function ensureEntity(world, entityId) {
|
|
|
85
85
|
return meta;
|
|
86
86
|
}
|
|
87
87
|
case ENTITY_TYPE: {
|
|
88
|
-
throw new
|
|
88
|
+
throw new NotFound({ resource: "Entity", id: entityId, context: "world" });
|
|
89
89
|
}
|
|
90
90
|
default: {
|
|
91
|
-
throw new
|
|
91
|
+
throw new InvalidState({ message: `Invalid entity type: ${type}` });
|
|
92
92
|
}
|
|
93
93
|
}
|
|
94
94
|
}
|
|
@@ -97,7 +97,7 @@ export function ensureEntity(world, entityId) {
|
|
|
97
97
|
*
|
|
98
98
|
* @param world - World instance
|
|
99
99
|
* @returns Encoded entity ID
|
|
100
|
-
* @throws {
|
|
100
|
+
* @throws {LimitExceeded} If entity limit (1,048,576) exceeded
|
|
101
101
|
*
|
|
102
102
|
* @example
|
|
103
103
|
* ```typescript
|
package/dist/entity.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entity.js","sourceRoot":"","sources":["../src/entity.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,8BAA8B,EAAE,8BAA8B,EAAE,MAAM,gBAAgB,CAAC;AACtH,OAAO,EAAE,YAAY,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAEtE,OAAO,EACL,cAAc,EACd,WAAW,EACX,YAAY,EACZ,SAAS,EACT,WAAW,EACX,WAAW,EACX,SAAS,EACT,UAAU,EACV,MAAM,EACN,iBAAiB,EACjB,QAAQ,GACT,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC1D,OAAO,EAAE,2BAA2B,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAwC7E;;;GAGG;AACH,SAAS,gBAAgB,CAAC,KAAY;IACpC,MAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;IAC3C,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,gDAAgD;QAChD,MAAM,UAAU,GAAG,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAE,CAAC;QAC1D,OAAO,YAAY,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;IACzC,CAAC;IAED,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;IAEzC,
|
|
1
|
+
{"version":3,"file":"entity.js","sourceRoot":"","sources":["../src/entity.ts"],"names":[],"mappings":"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"}
|
package/dist/error.d.ts
ADDED
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Base error class for all Iris ECS errors.
|
|
3
|
+
*
|
|
4
|
+
* Provides structured error categories with typed parameters for
|
|
5
|
+
* programmatic error handling via `instanceof` checks.
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```typescript
|
|
9
|
+
* try {
|
|
10
|
+
* createEntity(world);
|
|
11
|
+
* } catch (error) {
|
|
12
|
+
* if (error instanceof LimitExceeded) {
|
|
13
|
+
* console.log(error.resource, error.max);
|
|
14
|
+
* }
|
|
15
|
+
* }
|
|
16
|
+
* ```
|
|
17
|
+
*/
|
|
18
|
+
export declare class IrisError extends Error {
|
|
19
|
+
constructor(message: string, options?: {
|
|
20
|
+
cause?: unknown;
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Thrown when an ID space is exhausted.
|
|
25
|
+
*
|
|
26
|
+
* @example
|
|
27
|
+
* ```typescript
|
|
28
|
+
* // Thrown when entity limit (1,048,576) is exceeded
|
|
29
|
+
* const entity = createEntity(world);
|
|
30
|
+
* ```
|
|
31
|
+
*/
|
|
32
|
+
export declare class LimitExceeded extends IrisError {
|
|
33
|
+
readonly resource: string;
|
|
34
|
+
readonly max: number;
|
|
35
|
+
readonly id?: number;
|
|
36
|
+
constructor(params: {
|
|
37
|
+
resource: string;
|
|
38
|
+
max: number;
|
|
39
|
+
id?: number;
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Thrown when a referenced item does not exist.
|
|
44
|
+
*
|
|
45
|
+
* @example
|
|
46
|
+
* ```typescript
|
|
47
|
+
* // Thrown when accessing a destroyed entity
|
|
48
|
+
* ensureEntity(world, destroyedEntity);
|
|
49
|
+
* ```
|
|
50
|
+
*/
|
|
51
|
+
export declare class NotFound extends IrisError {
|
|
52
|
+
readonly resource: string;
|
|
53
|
+
readonly id: string | number;
|
|
54
|
+
readonly context?: string;
|
|
55
|
+
constructor(params: {
|
|
56
|
+
resource: string;
|
|
57
|
+
id: string | number;
|
|
58
|
+
context?: string;
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Thrown when attempting to register a duplicate item.
|
|
63
|
+
*
|
|
64
|
+
* @example
|
|
65
|
+
* ```typescript
|
|
66
|
+
* // Thrown when registering a system with the same name twice
|
|
67
|
+
* addSystem(world, mySystem);
|
|
68
|
+
* addSystem(world, mySystem); // throws Duplicate
|
|
69
|
+
* ```
|
|
70
|
+
*/
|
|
71
|
+
export declare class Duplicate extends IrisError {
|
|
72
|
+
readonly resource: string;
|
|
73
|
+
readonly id: string | number;
|
|
74
|
+
constructor(params: {
|
|
75
|
+
resource: string;
|
|
76
|
+
id: string | number;
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Thrown when a function argument fails validation.
|
|
81
|
+
*
|
|
82
|
+
* @example
|
|
83
|
+
* ```typescript
|
|
84
|
+
* // Thrown when registering an anonymous system without a name
|
|
85
|
+
* addSystem(world, () => {});
|
|
86
|
+
* ```
|
|
87
|
+
*/
|
|
88
|
+
export declare class InvalidArgument extends IrisError {
|
|
89
|
+
readonly expected: string;
|
|
90
|
+
readonly actual?: string;
|
|
91
|
+
constructor(params: {
|
|
92
|
+
expected: string;
|
|
93
|
+
actual?: string;
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Thrown when the system reaches an invalid or unexpected state.
|
|
98
|
+
*
|
|
99
|
+
* @example
|
|
100
|
+
* ```typescript
|
|
101
|
+
* // Thrown on circular system dependencies
|
|
102
|
+
* addSystem(world, a, { before: "b" });
|
|
103
|
+
* addSystem(world, b, { before: "a" });
|
|
104
|
+
* await runOnce(world);
|
|
105
|
+
* ```
|
|
106
|
+
*/
|
|
107
|
+
export declare class InvalidState extends IrisError {
|
|
108
|
+
constructor(params: {
|
|
109
|
+
message: string;
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Assert a condition, throwing a typed error if false.
|
|
114
|
+
*
|
|
115
|
+
* Error is only constructed when the condition fails (lazy construction).
|
|
116
|
+
* TypeScript `asserts condition` narrows the type at call sites.
|
|
117
|
+
*
|
|
118
|
+
* @param condition - Value to check for truthiness
|
|
119
|
+
* @param ErrorClass - Error class to instantiate on failure
|
|
120
|
+
* @param params - Constructor parameters for the error class
|
|
121
|
+
*
|
|
122
|
+
* @example
|
|
123
|
+
* ```typescript
|
|
124
|
+
* assert(rawId <= ID_MASK_20, LimitExceeded, { resource: "Entity", max: ID_MASK_20, id: rawId });
|
|
125
|
+
* // rawId is narrowed to truthy after this point
|
|
126
|
+
* ```
|
|
127
|
+
*/
|
|
128
|
+
export declare function assert<P>(condition: unknown, ErrorClass: new (params: P) => IrisError, params: P): asserts condition;
|
|
129
|
+
//# sourceMappingURL=error.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error.d.ts","sourceRoot":"","sources":["../src/error.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,SAAU,SAAQ,KAAK;gBACtB,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE;CAI3D;AAMD;;;;;;;;GAQG;AACH,qBAAa,aAAc,SAAQ,SAAS;IAC1C,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC;gBAET,MAAM,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,EAAE,CAAC,EAAE,MAAM,CAAA;KAAE;CAOnE;AAED;;;;;;;;GAQG;AACH,qBAAa,QAAS,SAAQ,SAAS;IACrC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;IAC7B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;gBAEd,MAAM,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE;CAOhF;AAED;;;;;;;;;GASG;AACH,qBAAa,SAAU,SAAQ,SAAS;IACtC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;gBAEjB,MAAM,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE;CAK9D;AAED;;;;;;;;GAQG;AACH,qBAAa,eAAgB,SAAQ,SAAS;IAC5C,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;gBAEb,MAAM,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE;CAM1D;AAED;;;;;;;;;;GAUG;AACH,qBAAa,YAAa,SAAQ,SAAS;gBAC7B,MAAM,EAAE;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE;CAGxC;AAMD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,MAAM,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,MAAM,EAAE,CAAC,KAAK,SAAS,EAAE,MAAM,EAAE,CAAC,GAAG,OAAO,CAAC,SAAS,CAIpH"}
|
package/dist/error.js
ADDED
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
// ============================================================================
|
|
2
|
+
// Base Error
|
|
3
|
+
// ============================================================================
|
|
4
|
+
/**
|
|
5
|
+
* Base error class for all Iris ECS errors.
|
|
6
|
+
*
|
|
7
|
+
* Provides structured error categories with typed parameters for
|
|
8
|
+
* programmatic error handling via `instanceof` checks.
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```typescript
|
|
12
|
+
* try {
|
|
13
|
+
* createEntity(world);
|
|
14
|
+
* } catch (error) {
|
|
15
|
+
* if (error instanceof LimitExceeded) {
|
|
16
|
+
* console.log(error.resource, error.max);
|
|
17
|
+
* }
|
|
18
|
+
* }
|
|
19
|
+
* ```
|
|
20
|
+
*/
|
|
21
|
+
export class IrisError extends Error {
|
|
22
|
+
constructor(message, options) {
|
|
23
|
+
super(message, options);
|
|
24
|
+
this.name = new.target.name;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
// ============================================================================
|
|
28
|
+
// Error Categories
|
|
29
|
+
// ============================================================================
|
|
30
|
+
/**
|
|
31
|
+
* Thrown when an ID space is exhausted.
|
|
32
|
+
*
|
|
33
|
+
* @example
|
|
34
|
+
* ```typescript
|
|
35
|
+
* // Thrown when entity limit (1,048,576) is exceeded
|
|
36
|
+
* const entity = createEntity(world);
|
|
37
|
+
* ```
|
|
38
|
+
*/
|
|
39
|
+
export class LimitExceeded extends IrisError {
|
|
40
|
+
resource;
|
|
41
|
+
max;
|
|
42
|
+
id;
|
|
43
|
+
constructor(params) {
|
|
44
|
+
const idInfo = params.id !== undefined ? ` (cannot allocate ID ${params.id})` : "";
|
|
45
|
+
super(`${params.resource} limit exceeded: max ${params.max}${idInfo}`);
|
|
46
|
+
this.resource = params.resource;
|
|
47
|
+
this.max = params.max;
|
|
48
|
+
this.id = params.id;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Thrown when a referenced item does not exist.
|
|
53
|
+
*
|
|
54
|
+
* @example
|
|
55
|
+
* ```typescript
|
|
56
|
+
* // Thrown when accessing a destroyed entity
|
|
57
|
+
* ensureEntity(world, destroyedEntity);
|
|
58
|
+
* ```
|
|
59
|
+
*/
|
|
60
|
+
export class NotFound extends IrisError {
|
|
61
|
+
resource;
|
|
62
|
+
id;
|
|
63
|
+
context;
|
|
64
|
+
constructor(params) {
|
|
65
|
+
const ctx = params.context ? ` in ${params.context}` : "";
|
|
66
|
+
super(`${params.resource} "${params.id}" not found${ctx}`);
|
|
67
|
+
this.resource = params.resource;
|
|
68
|
+
this.id = params.id;
|
|
69
|
+
this.context = params.context;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Thrown when attempting to register a duplicate item.
|
|
74
|
+
*
|
|
75
|
+
* @example
|
|
76
|
+
* ```typescript
|
|
77
|
+
* // Thrown when registering a system with the same name twice
|
|
78
|
+
* addSystem(world, mySystem);
|
|
79
|
+
* addSystem(world, mySystem); // throws Duplicate
|
|
80
|
+
* ```
|
|
81
|
+
*/
|
|
82
|
+
export class Duplicate extends IrisError {
|
|
83
|
+
resource;
|
|
84
|
+
id;
|
|
85
|
+
constructor(params) {
|
|
86
|
+
super(`${params.resource} "${params.id}" already exists`);
|
|
87
|
+
this.resource = params.resource;
|
|
88
|
+
this.id = params.id;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Thrown when a function argument fails validation.
|
|
93
|
+
*
|
|
94
|
+
* @example
|
|
95
|
+
* ```typescript
|
|
96
|
+
* // Thrown when registering an anonymous system without a name
|
|
97
|
+
* addSystem(world, () => {});
|
|
98
|
+
* ```
|
|
99
|
+
*/
|
|
100
|
+
export class InvalidArgument extends IrisError {
|
|
101
|
+
expected;
|
|
102
|
+
actual;
|
|
103
|
+
constructor(params) {
|
|
104
|
+
const act = params.actual !== undefined ? `, got ${params.actual}` : "";
|
|
105
|
+
super(`Invalid argument: expected ${params.expected}${act}`);
|
|
106
|
+
this.expected = params.expected;
|
|
107
|
+
this.actual = params.actual;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Thrown when the system reaches an invalid or unexpected state.
|
|
112
|
+
*
|
|
113
|
+
* @example
|
|
114
|
+
* ```typescript
|
|
115
|
+
* // Thrown on circular system dependencies
|
|
116
|
+
* addSystem(world, a, { before: "b" });
|
|
117
|
+
* addSystem(world, b, { before: "a" });
|
|
118
|
+
* await runOnce(world);
|
|
119
|
+
* ```
|
|
120
|
+
*/
|
|
121
|
+
export class InvalidState extends IrisError {
|
|
122
|
+
constructor(params) {
|
|
123
|
+
super(params.message);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
// ============================================================================
|
|
127
|
+
// Assert Utility
|
|
128
|
+
// ============================================================================
|
|
129
|
+
/**
|
|
130
|
+
* Assert a condition, throwing a typed error if false.
|
|
131
|
+
*
|
|
132
|
+
* Error is only constructed when the condition fails (lazy construction).
|
|
133
|
+
* TypeScript `asserts condition` narrows the type at call sites.
|
|
134
|
+
*
|
|
135
|
+
* @param condition - Value to check for truthiness
|
|
136
|
+
* @param ErrorClass - Error class to instantiate on failure
|
|
137
|
+
* @param params - Constructor parameters for the error class
|
|
138
|
+
*
|
|
139
|
+
* @example
|
|
140
|
+
* ```typescript
|
|
141
|
+
* assert(rawId <= ID_MASK_20, LimitExceeded, { resource: "Entity", max: ID_MASK_20, id: rawId });
|
|
142
|
+
* // rawId is narrowed to truthy after this point
|
|
143
|
+
* ```
|
|
144
|
+
*/
|
|
145
|
+
export function assert(condition, ErrorClass, params) {
|
|
146
|
+
if (!condition) {
|
|
147
|
+
throw new ErrorClass(params);
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
//# sourceMappingURL=error.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error.js","sourceRoot":"","sources":["../src/error.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
export { assert, Duplicate, InvalidArgument, InvalidState, IrisError, LimitExceeded, NotFound } from "./error.js";
|
|
1
2
|
export { createWorld, resetWorld } from "./world.js";
|
|
2
3
|
export { createEntity, destroyEntity, isEntityAlive } from "./entity.js";
|
|
3
4
|
export { addComponent, emitComponentChanged, getComponentValue, hasComponent, removeComponent, setComponentValue, } from "./component.js";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAMrD,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAMzE,OAAO,EACL,YAAY,EACZ,oBAAoB,EACpB,iBAAiB,EACjB,YAAY,EACZ,eAAe,EACf,iBAAiB,GAClB,MAAM,gBAAgB,CAAC;AAMxB,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAMrF,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,kBAAkB,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAMzF,OAAO,EACL,WAAW,EACX,gBAAgB,EAChB,WAAW,EACX,cAAc,EACd,gBAAgB,GACjB,MAAM,eAAe,CAAC;AAMvB,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAM7E,OAAO,EACL,KAAK,EACL,OAAO,EACP,YAAY,EACZ,WAAW,EACX,aAAa,EACb,sBAAsB,EACtB,gBAAgB,EAChB,GAAG,GACJ,MAAM,YAAY,CAAC;AAMpB,OAAO,EACL,SAAS,EACT,cAAc,EACd,KAAK,EACL,mBAAmB,EACnB,oBAAoB,EACpB,IAAI,EACJ,UAAU,EACV,SAAS,EACT,GAAG,EACH,OAAO,EACP,QAAQ,EACR,OAAO,EACP,IAAI,EACJ,MAAM,GACP,MAAM,gBAAgB,CAAC;AAMxB,YAAY,EAAE,YAAY,EAAE,iBAAiB,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAC7E,YAAY,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,gBAAgB,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AACxG,YAAY,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACrD,YAAY,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAChD,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AACtF,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AACtH,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC7F,YAAY,EAAE,iBAAiB,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3E,YAAY,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAMxC,OAAO,EACL,WAAW,EACX,WAAW,EACX,WAAW,EACX,SAAS,EACT,WAAW,EACX,cAAc,EACd,SAAS,GACV,MAAM,YAAY,CAAC;AAMpB,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAMvC,OAAO,EAAE,wBAAwB,EAAE,0BAA0B,EAAE,MAAM,eAAe,CAAC;AAMrF,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAMnC,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,eAAe,EAAE,YAAY,EAAE,SAAS,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAMlH,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAMrD,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAMzE,OAAO,EACL,YAAY,EACZ,oBAAoB,EACpB,iBAAiB,EACjB,YAAY,EACZ,eAAe,EACf,iBAAiB,GAClB,MAAM,gBAAgB,CAAC;AAMxB,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAMrF,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,kBAAkB,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAMzF,OAAO,EACL,WAAW,EACX,gBAAgB,EAChB,WAAW,EACX,cAAc,EACd,gBAAgB,GACjB,MAAM,eAAe,CAAC;AAMvB,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAM7E,OAAO,EACL,KAAK,EACL,OAAO,EACP,YAAY,EACZ,WAAW,EACX,aAAa,EACb,sBAAsB,EACtB,gBAAgB,EAChB,GAAG,GACJ,MAAM,YAAY,CAAC;AAMpB,OAAO,EACL,SAAS,EACT,cAAc,EACd,KAAK,EACL,mBAAmB,EACnB,oBAAoB,EACpB,IAAI,EACJ,UAAU,EACV,SAAS,EACT,GAAG,EACH,OAAO,EACP,QAAQ,EACR,OAAO,EACP,IAAI,EACJ,MAAM,GACP,MAAM,gBAAgB,CAAC;AAMxB,YAAY,EAAE,YAAY,EAAE,iBAAiB,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAC7E,YAAY,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,gBAAgB,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AACxG,YAAY,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACrD,YAAY,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAChD,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AACtF,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AACtH,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC7F,YAAY,EAAE,iBAAiB,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3E,YAAY,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAMxC,OAAO,EACL,WAAW,EACX,WAAW,EACX,WAAW,EACX,SAAS,EACT,WAAW,EACX,cAAc,EACd,SAAS,GACV,MAAM,YAAY,CAAC;AAMpB,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAMvC,OAAO,EAAE,wBAAwB,EAAE,0BAA0B,EAAE,MAAM,eAAe,CAAC;AAMrF,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAMnC,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,4 +1,8 @@
|
|
|
1
1
|
// ============================================================================
|
|
2
|
+
// Errors
|
|
3
|
+
// ============================================================================
|
|
4
|
+
export { assert, Duplicate, InvalidArgument, InvalidState, IrisError, LimitExceeded, NotFound } from "./error.js";
|
|
5
|
+
// ============================================================================
|
|
2
6
|
// World Operations
|
|
3
7
|
// ============================================================================
|
|
4
8
|
export { createWorld, resetWorld } from "./world.js";
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,mBAAmB;AACnB,+EAA+E;AAE/E,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAErD,+EAA+E;AAC/E,oBAAoB;AACpB,+EAA+E;AAE/E,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEzE,+EAA+E;AAC/E,uBAAuB;AACvB,+EAA+E;AAE/E,OAAO,EACL,YAAY,EACZ,oBAAoB,EACpB,iBAAiB,EACjB,YAAY,EACZ,eAAe,EACf,iBAAiB,GAClB,MAAM,gBAAgB,CAAC;AAExB,+EAA+E;AAC/E,sBAAsB;AACtB,+EAA+E;AAE/E,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAErF,+EAA+E;AAC/E,sBAAsB;AACtB,+EAA+E;AAE/E,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,kBAAkB,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAEzF,+EAA+E;AAC/E,sBAAsB;AACtB,+EAA+E;AAE/E,OAAO,EACL,WAAW,EACX,gBAAgB,EAChB,WAAW,EACX,cAAc,EACd,gBAAgB,GACjB,MAAM,eAAe,CAAC;AAEvB,+EAA+E;AAC/E,cAAc;AACd,+EAA+E;AAE/E,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAE7E,+EAA+E;AAC/E,mBAAmB;AACnB,+EAA+E;AAE/E,OAAO,EACL,KAAK,EACL,OAAO,EACP,YAAY,EACZ,WAAW,EACX,aAAa,EACb,sBAAsB,EACtB,gBAAgB,EAChB,GAAG,GACJ,MAAM,YAAY,CAAC;AAEpB,+EAA+E;AAC/E,oBAAoB;AACpB,+EAA+E;AAE/E,OAAO,EACL,SAAS,EACT,cAAc,EACd,KAAK,EACL,mBAAmB,EACnB,oBAAoB,EACpB,IAAI,EACJ,UAAU,EACV,SAAS,EACT,GAAG,EACH,OAAO,EACP,QAAQ,EACR,OAAO,EACP,IAAI,EACJ,MAAM,GACP,MAAM,gBAAgB,CAAC;AAgBxB,+EAA+E;AAC/E,eAAe;AACf,+EAA+E;AAE/E,OAAO,EACL,WAAW,EACX,WAAW,EACX,WAAW,EACX,SAAS,EACT,WAAW,EACX,cAAc,EACd,SAAS,GACV,MAAM,YAAY,CAAC;AAEpB,+EAA+E;AAC/E,oBAAoB;AACpB,+EAA+E;AAE/E,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,+EAA+E;AAC/E,YAAY;AACZ,+EAA+E;AAE/E,OAAO,EAAE,wBAAwB,EAAE,0BAA0B,EAAE,MAAM,eAAe,CAAC;AAErF,+EAA+E;AAC/E,mBAAmB;AACnB,+EAA+E;AAE/E,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAEnC,+EAA+E;AAC/E,UAAU;AACV,+EAA+E;AAE/E,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,SAAS;AACT,+EAA+E;AAE/E,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,eAAe,EAAE,YAAY,EAAE,SAAS,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAElH,+EAA+E;AAC/E,mBAAmB;AACnB,+EAA+E;AAE/E,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAErD,+EAA+E;AAC/E,oBAAoB;AACpB,+EAA+E;AAE/E,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEzE,+EAA+E;AAC/E,uBAAuB;AACvB,+EAA+E;AAE/E,OAAO,EACL,YAAY,EACZ,oBAAoB,EACpB,iBAAiB,EACjB,YAAY,EACZ,eAAe,EACf,iBAAiB,GAClB,MAAM,gBAAgB,CAAC;AAExB,+EAA+E;AAC/E,sBAAsB;AACtB,+EAA+E;AAE/E,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAErF,+EAA+E;AAC/E,sBAAsB;AACtB,+EAA+E;AAE/E,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,kBAAkB,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAEzF,+EAA+E;AAC/E,sBAAsB;AACtB,+EAA+E;AAE/E,OAAO,EACL,WAAW,EACX,gBAAgB,EAChB,WAAW,EACX,cAAc,EACd,gBAAgB,GACjB,MAAM,eAAe,CAAC;AAEvB,+EAA+E;AAC/E,cAAc;AACd,+EAA+E;AAE/E,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAE7E,+EAA+E;AAC/E,mBAAmB;AACnB,+EAA+E;AAE/E,OAAO,EACL,KAAK,EACL,OAAO,EACP,YAAY,EACZ,WAAW,EACX,aAAa,EACb,sBAAsB,EACtB,gBAAgB,EAChB,GAAG,GACJ,MAAM,YAAY,CAAC;AAEpB,+EAA+E;AAC/E,oBAAoB;AACpB,+EAA+E;AAE/E,OAAO,EACL,SAAS,EACT,cAAc,EACd,KAAK,EACL,mBAAmB,EACnB,oBAAoB,EACpB,IAAI,EACJ,UAAU,EACV,SAAS,EACT,GAAG,EACH,OAAO,EACP,QAAQ,EACR,OAAO,EACP,IAAI,EACJ,MAAM,GACP,MAAM,gBAAgB,CAAC;AAgBxB,+EAA+E;AAC/E,eAAe;AACf,+EAA+E;AAE/E,OAAO,EACL,WAAW,EACX,WAAW,EACX,WAAW,EACX,SAAS,EACT,WAAW,EACX,cAAc,EACd,SAAS,GACV,MAAM,YAAY,CAAC;AAEpB,+EAA+E;AAC/E,oBAAoB;AACpB,+EAA+E;AAE/E,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,+EAA+E;AAC/E,YAAY;AACZ,+EAA+E;AAE/E,OAAO,EAAE,wBAAwB,EAAE,0BAA0B,EAAE,MAAM,eAAe,CAAC;AAErF,+EAA+E;AAC/E,mBAAmB;AACnB,+EAA+E;AAE/E,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAEnC,+EAA+E;AAC/E,UAAU;AACV,+EAA+E;AAE/E,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC"}
|
package/dist/name.d.ts
CHANGED
|
@@ -37,7 +37,8 @@ export declare function getName(world: World, entityId: EntityId): string | unde
|
|
|
37
37
|
* @param world - World instance
|
|
38
38
|
* @param entityId - Entity to name
|
|
39
39
|
* @param name - Name to assign (must be unique and non-empty)
|
|
40
|
-
* @throws
|
|
40
|
+
* @throws {InvalidArgument} If name is empty
|
|
41
|
+
* @throws {Duplicate} If name already exists
|
|
41
42
|
* @example
|
|
42
43
|
* ```ts
|
|
43
44
|
* setName(world, player, "player-1");
|
package/dist/name.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"name.d.ts","sourceRoot":"","sources":["../src/name.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"name.d.ts","sourceRoot":"","sources":["../src/name.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAM9C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAMxC;;;;;;;;;;GAUG;AACH,eAAO,MAAM,IAAI;;EAAoD,CAAC;AActE;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAqEjD;AAMD;;;;;;;;;GASG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,GAAG,MAAM,GAAG,SAAS,CAE5E;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAO5E;AAED;;;;;;;;GAQG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAMjE;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,UAAU,EAAE,QAAQ,EAAE,GAAG,QAAQ,GAAG,SAAS,CAexG"}
|
package/dist/name.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { addComponent, getComponentValue, hasComponent, removeComponent, setComponentValue } from "./component.js";
|
|
2
|
+
import { assert, Duplicate, InvalidArgument } from "./error.js";
|
|
2
3
|
import { registerObserverCallback } from "./observer.js";
|
|
3
4
|
import { defineComponent } from "./registry.js";
|
|
4
5
|
import { addResource, getResourceValue } from "./resource.js";
|
|
@@ -63,12 +64,8 @@ export function initNameSystem(world) {
|
|
|
63
64
|
if (previous === current) {
|
|
64
65
|
return;
|
|
65
66
|
}
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
}
|
|
69
|
-
if (nameToEntity.has(current)) {
|
|
70
|
-
throw new Error(`Name "${current}" already exists`);
|
|
71
|
-
}
|
|
67
|
+
assert(current, InvalidArgument, { expected: "non-empty name" });
|
|
68
|
+
assert(!nameToEntity.has(current), Duplicate, { resource: "Name", id: current });
|
|
72
69
|
// Remove old mapping if renaming an entity
|
|
73
70
|
if (previous !== undefined) {
|
|
74
71
|
nameToEntity.delete(previous);
|
|
@@ -116,7 +113,8 @@ export function getName(world, entityId) {
|
|
|
116
113
|
* @param world - World instance
|
|
117
114
|
* @param entityId - Entity to name
|
|
118
115
|
* @param name - Name to assign (must be unique and non-empty)
|
|
119
|
-
* @throws
|
|
116
|
+
* @throws {InvalidArgument} If name is empty
|
|
117
|
+
* @throws {Duplicate} If name already exists
|
|
120
118
|
* @example
|
|
121
119
|
* ```ts
|
|
122
120
|
* setName(world, player, "player-1");
|
package/dist/name.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"name.js","sourceRoot":"","sources":["../src/name.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,YAAY,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAEnH,OAAO,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAC9D,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAGnC,+EAA+E;AAC/E,wBAAwB;AACxB,+EAA+E;AAE/E;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,IAAI,GAAG,eAAe,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AAEtE;;GAEG;AACH,MAAM,YAAY,GAAG,eAAe,CAAC,cAAc,EAAE;IACnD,YAAY,EAAE,IAAI,CAAC,MAAM,EAAyB;IAClD,YAAY,EAAE,IAAI,CAAC,MAAM,EAAyB;CACnD,CAAC,CAAC;AAEH,+EAA+E;AAC/E,iBAAiB;AACjB,+EAA+E;AAE/E;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAC,KAAY;IACzC,WAAW,CAAC,KAAK,EAAE,YAAY,EAAE;QAC/B,YAAY,EAAE,IAAI,GAAG,EAAE;QACvB,YAAY,EAAE,IAAI,GAAG,EAAE;KACxB,CAAC,CAAC;IAEH,kEAAkE;IAClE,wBAAwB,CAAC,KAAK,EAAE,kBAAkB,EAAE,CAAC,WAAW,EAAE,QAAQ,EAAE,EAAE;QAC5E,IAAI,WAAW,KAAK,IAAI,EAAE,CAAC;YACzB,OAAO;QACT,CAAC;QAED,MAAM,YAAY,GAAG,gBAAgB,CAAC,KAAK,EAAE,YAAY,EAAE,cAAc,CAAE,CAAC;QAC5E,MAAM,YAAY,GAAG,gBAAgB,CAAC,KAAK,EAAE,YAAY,EAAE,cAAc,CAAE,CAAC;QAC5E,MAAM,IAAI,GAAG,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAE,CAAC;QAEzC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC1B,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAChC,CAAC,CAAC,CAAC;IAEH,mEAAmE;IACnE,2EAA2E;IAC3E,wBAAwB,CAAC,KAAK,EAAE,kBAAkB,EAAE,CAAC,WAAW,EAAE,QAAQ,EAAE,EAAE;QAC5E,IAAI,WAAW,KAAK,IAAI,EAAE,CAAC;YACzB,OAAO;QACT,CAAC;QAED,MAAM,YAAY,GAAG,gBAAgB,CAAC,KAAK,EAAE,YAAY,EAAE,cAAc,CAAE,CAAC;QAC5E,MAAM,YAAY,GAAG,gBAAgB,CAAC,KAAK,EAAE,YAAY,EAAE,cAAc,CAAE,CAAC;QAC5E,MAAM,QAAQ,GAAG,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC5C,MAAM,OAAO,GAAG,iBAAiB,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QAElE,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;YACzB,OAAO;QACT,CAAC;QAED,
|
|
1
|
+
{"version":3,"file":"name.js","sourceRoot":"","sources":["../src/name.ts"],"names":[],"mappings":"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"}
|
package/dist/query.d.ts
CHANGED
|
@@ -108,7 +108,7 @@ export declare function hashQuery(include: EntityId[], exclude: EntityId[], adde
|
|
|
108
108
|
* @param world - World instance
|
|
109
109
|
* @param terms - Components and modifiers
|
|
110
110
|
* @returns Query metadata
|
|
111
|
-
* @throws {
|
|
111
|
+
* @throws {InvalidArgument} If no included components (query must match something)
|
|
112
112
|
*
|
|
113
113
|
* @example
|
|
114
114
|
* const query = ensureQuery(world, Position, Velocity, not(Dead));
|
package/dist/query.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../src/query.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../src/query.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAE9C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE/C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAE9C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAMxC;;;;GAIG;AACH,MAAM,MAAM,SAAS,GAAG;IACtB;;OAEG;IACH,OAAO,EAAE,QAAQ,EAAE,CAAC;IAEpB;;OAEG;IACH,OAAO,EAAE,QAAQ,EAAE,CAAC;IAEpB;;OAEG;IACH,MAAM,EAAE,UAAU,CAAC;IAEnB;;OAEG;IACH,eAAe,EAAE,QAAQ,CAAC,iBAAiB,CAAC,CAAC;IAE7C;;OAEG;IACH,KAAK,EAAE,QAAQ,EAAE,CAAC;IAElB;;OAEG;IACH,OAAO,EAAE,QAAQ,EAAE,CAAC;IAEpB;;OAEG;IACH,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC/B,CAAC;AAMF,MAAM,MAAM,YAAY,GAAG,KAAK,GAAG,OAAO,GAAG,SAAS,CAAC;AACvD,MAAM,MAAM,WAAW,GAAG;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,WAAW,EAAE,QAAQ,CAAA;CAAE,CAAC;AACjE,MAAM,MAAM,aAAa,GAAG;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,WAAW,EAAE,QAAQ,CAAA;CAAE,CAAC;AACrE,MAAM,MAAM,eAAe,GAAG;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,WAAW,EAAE,QAAQ,CAAA;CAAE,CAAC;AACzE,MAAM,MAAM,aAAa,GAAG,WAAW,GAAG,aAAa,GAAG,eAAe,CAAC;AAE1E;;;;;;;;;;GAUG;AACH,wBAAgB,GAAG,CAAC,WAAW,EAAE,QAAQ,GAAG,WAAW,CAEtD;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,KAAK,CAAC,WAAW,EAAE,QAAQ,GAAG,aAAa,CAE1D;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,OAAO,CAAC,WAAW,EAAE,QAAQ,GAAG,eAAe,CAE9D;AAaD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,QAAQ,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,MAAM,CAKlH;AAMD;;;;;;;;;;GAUG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,KAAK,EAAE,CAAC,QAAQ,GAAG,aAAa,CAAC,EAAE,GAAG,SAAS,CAkE3F;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAiB,sBAAsB,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAwEtG;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,GAAG,IAAI,CAMrE;AAMD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAiB,aAAa,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,KAAK,EAAE,CAAC,QAAQ,GAAG,aAAa,CAAC,EAAE,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAI/G;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,KAAK,EAAE,CAAC,QAAQ,GAAG,aAAa,CAAC,EAAE,GAAG,QAAQ,GAAG,SAAS,CAQ3G"}
|
package/dist/query.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { assert, InvalidArgument } from "./error.js";
|
|
1
2
|
import { ensureFilter, iterateFilterEntities } from "./filters.js";
|
|
2
3
|
import { registerObserverCallback, unregisterObserverCallback } from "./observer.js";
|
|
3
4
|
/**
|
|
@@ -79,7 +80,7 @@ export function hashQuery(include, exclude, added, changed) {
|
|
|
79
80
|
* @param world - World instance
|
|
80
81
|
* @param terms - Components and modifiers
|
|
81
82
|
* @returns Query metadata
|
|
82
|
-
* @throws {
|
|
83
|
+
* @throws {InvalidArgument} If no included components (query must match something)
|
|
83
84
|
*
|
|
84
85
|
* @example
|
|
85
86
|
* const query = ensureQuery(world, Position, Velocity, not(Dead));
|
|
@@ -110,9 +111,7 @@ export function ensureQuery(world, ...terms) {
|
|
|
110
111
|
}
|
|
111
112
|
// Filter must include added/changed components since they must be present on entity
|
|
112
113
|
const filterInclude = include.concat(added, changed);
|
|
113
|
-
|
|
114
|
-
throw new Error("Query must include at least one component");
|
|
115
|
-
}
|
|
114
|
+
assert(filterInclude.length > 0, InvalidArgument, { expected: "at least one component in query" });
|
|
116
115
|
const queryId = hashQuery(include, exclude, added, changed);
|
|
117
116
|
let queryMeta = world.queries.byId.get(queryId);
|
|
118
117
|
if (!queryMeta) {
|
package/dist/query.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query.js","sourceRoot":"","sources":["../src/query.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"query.js","sourceRoot":"","sources":["../src/query.ts"],"names":[],"mappings":"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"}
|
package/dist/registry.d.ts
CHANGED
|
@@ -71,7 +71,7 @@ export declare const COMPONENT_REGISTRY: ComponentRegistry;
|
|
|
71
71
|
* Defines a tag component. Tags are lightweight markers without data.
|
|
72
72
|
* @param name - Human-readable tag name for debugging
|
|
73
73
|
* @returns Encoded tag ID
|
|
74
|
-
* @throws {
|
|
74
|
+
* @throws {LimitExceeded} If tag limit (1,048,576) exceeded
|
|
75
75
|
* @example
|
|
76
76
|
* const Player = defineTag("Player");
|
|
77
77
|
* addTag(world, entity, Player);
|
|
@@ -82,7 +82,7 @@ export declare function defineTag(name: string): Tag;
|
|
|
82
82
|
* @param name - Human-readable component name for debugging
|
|
83
83
|
* @param schema - Field schema record defining data layout
|
|
84
84
|
* @returns Encoded component ID with schema type
|
|
85
|
-
* @throws {
|
|
85
|
+
* @throws {LimitExceeded} If component limit (1,048,576) exceeded
|
|
86
86
|
* @example
|
|
87
87
|
* const Position = defineComponent("Position", { x: Type.f32, y: Type.f32 });
|
|
88
88
|
* set(world, entity, Position, { x: 10, y: 20 });
|
|
@@ -93,7 +93,7 @@ export declare function defineComponent<S extends SchemaRecord>(name: string, sc
|
|
|
93
93
|
* @param name - Human-readable relation name for debugging
|
|
94
94
|
* @param options - Configuration: schema for data, exclusive trait, delete behavior
|
|
95
95
|
* @returns Encoded relation ID with schema type
|
|
96
|
-
* @throws {
|
|
96
|
+
* @throws {LimitExceeded} If relation limit (256) exceeded
|
|
97
97
|
* @example
|
|
98
98
|
* const ChildOf = defineRelation("ChildOf", { exclusive: true, onDeleteTarget: "delete" });
|
|
99
99
|
* addPair(world, child, ChildOf, parent);
|
package/dist/registry.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AAG9D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAMhD;;;;GAIG;AACH,MAAM,MAAM,aAAa,GAAG;IAC1B;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,MAAM,CAAC,EAAE,YAAY,CAAC;IAEtB;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB;;OAEG;IACH,cAAc,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAC;CACtC,CAAC;AAMF;;;;GAIG;AACH,MAAM,MAAM,eAAe,CAAC,CAAC,SAAS,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI;IAC5E;;OAEG;IACH,MAAM,CAAC,EAAE,CAAC,CAAC;IAEX;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB;;OAEG;IACH,cAAc,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAC;CACtC,CAAC;AAMF;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC9B;;OAEG;IACH,IAAI,EAAE,GAAG,CAAC,GAAG,GAAG,SAAS,GAAG,QAAQ,EAAE,aAAa,CAAC,CAAC;IACrD;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,eAAe,EAAE,MAAM,CAAC;IACxB;;OAEG;IACH,cAAc,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,kBAAkB,EAAE,iBAKhC,CAAC;AAMF;;;;;;;;GAQG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,GAAG,CAe3C;AAMD;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAAC,CAAC,SAAS,YAAY,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAe7F;AAMD;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAAC,CAAC,SAAS,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,EAC3E,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC,GAC3B,QAAQ,CAAC,CAAC,CAAC,CAiBb;AAMD;;;;GAIG;AACH,eAAO,MAAM,QAAQ,iCAA6B,CAAC;AAMnD;;;GAGG;AACH,eAAO,MAAM,SAAS,KAAyB,CAAC;AAEhD;;;GAGG;AACH,eAAO,MAAM,cAAc,KAA8B,CAAC"}
|
package/dist/registry.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { encodeComponent, encodeRelation, encodeTag, ID_MASK_8, ID_MASK_20 } from "./encoding.js";
|
|
2
|
+
import { assert, LimitExceeded } from "./error.js";
|
|
2
3
|
/**
|
|
3
4
|
* Global component registry singleton.
|
|
4
5
|
*/
|
|
@@ -15,16 +16,14 @@ export const COMPONENT_REGISTRY = {
|
|
|
15
16
|
* Defines a tag component. Tags are lightweight markers without data.
|
|
16
17
|
* @param name - Human-readable tag name for debugging
|
|
17
18
|
* @returns Encoded tag ID
|
|
18
|
-
* @throws {
|
|
19
|
+
* @throws {LimitExceeded} If tag limit (1,048,576) exceeded
|
|
19
20
|
* @example
|
|
20
21
|
* const Player = defineTag("Player");
|
|
21
22
|
* addTag(world, entity, Player);
|
|
22
23
|
*/
|
|
23
24
|
export function defineTag(name) {
|
|
24
25
|
const rawId = COMPONENT_REGISTRY.nextTagId;
|
|
25
|
-
|
|
26
|
-
throw new RangeError(`Tag limit exceeded (max ${ID_MASK_20})`);
|
|
27
|
-
}
|
|
26
|
+
assert(rawId <= ID_MASK_20, LimitExceeded, { resource: "Tag", max: ID_MASK_20 });
|
|
28
27
|
const tagId = encodeTag(rawId);
|
|
29
28
|
COMPONENT_REGISTRY.byId.set(tagId, {
|
|
30
29
|
name,
|
|
@@ -41,16 +40,14 @@ export function defineTag(name) {
|
|
|
41
40
|
* @param name - Human-readable component name for debugging
|
|
42
41
|
* @param schema - Field schema record defining data layout
|
|
43
42
|
* @returns Encoded component ID with schema type
|
|
44
|
-
* @throws {
|
|
43
|
+
* @throws {LimitExceeded} If component limit (1,048,576) exceeded
|
|
45
44
|
* @example
|
|
46
45
|
* const Position = defineComponent("Position", { x: Type.f32, y: Type.f32 });
|
|
47
46
|
* set(world, entity, Position, { x: 10, y: 20 });
|
|
48
47
|
*/
|
|
49
48
|
export function defineComponent(name, schema) {
|
|
50
49
|
const rawId = COMPONENT_REGISTRY.nextComponentId;
|
|
51
|
-
|
|
52
|
-
throw new RangeError(`Component limit exceeded (max ${ID_MASK_20})`);
|
|
53
|
-
}
|
|
50
|
+
assert(rawId <= ID_MASK_20, LimitExceeded, { resource: "Component", max: ID_MASK_20 });
|
|
54
51
|
const componentId = encodeComponent(rawId);
|
|
55
52
|
COMPONENT_REGISTRY.byId.set(componentId, {
|
|
56
53
|
name,
|
|
@@ -67,16 +64,14 @@ export function defineComponent(name, schema) {
|
|
|
67
64
|
* @param name - Human-readable relation name for debugging
|
|
68
65
|
* @param options - Configuration: schema for data, exclusive trait, delete behavior
|
|
69
66
|
* @returns Encoded relation ID with schema type
|
|
70
|
-
* @throws {
|
|
67
|
+
* @throws {LimitExceeded} If relation limit (256) exceeded
|
|
71
68
|
* @example
|
|
72
69
|
* const ChildOf = defineRelation("ChildOf", { exclusive: true, onDeleteTarget: "delete" });
|
|
73
70
|
* addPair(world, child, ChildOf, parent);
|
|
74
71
|
*/
|
|
75
72
|
export function defineRelation(name, options) {
|
|
76
73
|
const rawId = COMPONENT_REGISTRY.nextRelationId;
|
|
77
|
-
|
|
78
|
-
throw new RangeError(`Relation limit exceeded (max ${ID_MASK_8})`);
|
|
79
|
-
}
|
|
74
|
+
assert(rawId <= ID_MASK_8, LimitExceeded, { resource: "Relation", max: ID_MASK_8 });
|
|
80
75
|
const relationId = encodeRelation(rawId);
|
|
81
76
|
COMPONENT_REGISTRY.byId.set(relationId, {
|
|
82
77
|
name,
|
package/dist/registry.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAClG,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAsFnD;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAsB;IACnD,IAAI,EAAE,IAAI,GAAG,EAAE;IACf,SAAS,EAAE,CAAC;IACZ,eAAe,EAAE,CAAC;IAClB,cAAc,EAAE,CAAC;CAClB,CAAC;AAEF,+EAA+E;AAC/E,iBAAiB;AACjB,+EAA+E;AAE/E;;;;;;;;GAQG;AACH,MAAM,UAAU,SAAS,CAAC,IAAY;IACpC,MAAM,KAAK,GAAG,kBAAkB,CAAC,SAAS,CAAC;IAE3C,MAAM,CAAC,KAAK,IAAI,UAAU,EAAE,aAAa,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC,CAAC;IAEjF,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;IAE/B,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE;QACjC,IAAI;QACJ,MAAM,EAAE,SAAS;KAClB,CAAC,CAAC;IAEH,kBAAkB,CAAC,SAAS,EAAE,CAAC;IAE/B,OAAO,KAAK,CAAC;AACf,CAAC;AAED,+EAA+E;AAC/E,uBAAuB;AACvB,+EAA+E;AAE/E;;;;;;;;;GASG;AACH,MAAM,UAAU,eAAe,CAAyB,IAAY,EAAE,MAAS;IAC7E,MAAM,KAAK,GAAG,kBAAkB,CAAC,eAAe,CAAC;IAEjD,MAAM,CAAC,KAAK,IAAI,UAAU,EAAE,aAAa,EAAE,EAAE,QAAQ,EAAE,WAAW,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC,CAAC;IAEvF,MAAM,WAAW,GAAG,eAAe,CAAI,KAAK,CAAC,CAAC;IAE9C,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE;QACvC,IAAI;QACJ,MAAM;KACP,CAAC,CAAC;IAEH,kBAAkB,CAAC,eAAe,EAAE,CAAC;IAErC,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,+EAA+E;AAC/E,sBAAsB;AACtB,+EAA+E;AAE/E;;;;;;;;;GASG;AACH,MAAM,UAAU,cAAc,CAC5B,IAAY,EACZ,OAA4B;IAE5B,MAAM,KAAK,GAAG,kBAAkB,CAAC,cAAc,CAAC;IAEhD,MAAM,CAAC,KAAK,IAAI,SAAS,EAAE,aAAa,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,CAAC;IAEpF,MAAM,UAAU,GAAG,cAAc,CAAI,KAAK,CAAC,CAAC;IAE5C,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE;QACtC,IAAI;QACJ,MAAM,EAAE,OAAO,EAAE,MAAM;QACvB,SAAS,EAAE,OAAO,EAAE,SAAS;QAC7B,cAAc,EAAE,OAAO,EAAE,cAAc;KACxC,CAAC,CAAC;IAEH,kBAAkB,CAAC,cAAc,EAAE,CAAC;IAEpC,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,+EAA+E;AAC/E,qBAAqB;AACrB,+EAA+E;AAE/E;;;;GAIG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,cAAc,CAAC,UAAU,CAAC,CAAC;AAEnD,+EAA+E;AAC/E,sBAAsB;AACtB,+EAA+E;AAE/E;;;GAGG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,SAAS,CAAC,WAAW,CAAC,CAAC;AAEhD;;;GAGG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,SAAS,CAAC,gBAAgB,CAAC,CAAC"}
|
package/dist/relation.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"relation.d.ts","sourceRoot":"","sources":["../src/relation.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"relation.d.ts","sourceRoot":"","sources":["../src/relation.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAoBhF,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAMxC;;;;;;;;;;GAUG;AACH,wBAAgB,IAAI,CAAC,CAAC,SAAS,QAAQ,EAAE,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,gBAAgB,GAAG,IAAI,CAAC,CAAC,CAAC,CAEvF;AAED;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,CAAC,SAAS,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAItE;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,GAAG,gBAAgB,CA2B1E;AAMD;;;;;;;;;;GAUG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,GAAG,gBAAgB,EAAE,CA4B3G;AAMD;;;;;;;;GAQG;AACH,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,QAAQ,GAAG,IAAI,CAkEtF"}
|
package/dist/relation.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { hasComponent } from "./component.js";
|
|
2
2
|
import { COMPONENT_TYPE, ENTITY_TYPE, encodeComponent, encodeEntity, encodePair, encodeRelation, encodeTag, extractId, extractPairRelationId, extractPairTargetId, extractPairTargetType, isPair, RELATIONSHIP_TYPE, TAG_TYPE, } from "./encoding.js";
|
|
3
3
|
import { destroyEntity, ensureEntity, isEntityAlive } from "./entity.js";
|
|
4
|
+
import { InvalidState } from "./error.js";
|
|
4
5
|
import { OnDeleteTarget, Wildcard } from "./registry.js";
|
|
5
6
|
// ============================================================================
|
|
6
7
|
// Pair Creation and Extraction
|
|
@@ -63,7 +64,7 @@ export function getPairTarget(world, pairId) {
|
|
|
63
64
|
return encodeRelation(targetRawId);
|
|
64
65
|
}
|
|
65
66
|
default:
|
|
66
|
-
throw new
|
|
67
|
+
throw new InvalidState({ message: `Invalid target type in pair: ${targetType}` });
|
|
67
68
|
}
|
|
68
69
|
}
|
|
69
70
|
// ============================================================================
|
package/dist/relation.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"relation.js","sourceRoot":"","sources":["../src/relation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,OAAO,EACL,cAAc,EACd,WAAW,EACX,eAAe,EACf,YAAY,EACZ,UAAU,EACV,cAAc,EACd,SAAS,EACT,SAAS,EACT,qBAAqB,EACrB,mBAAmB,EACnB,qBAAqB,EACrB,MAAM,EACN,iBAAiB,EACjB,QAAQ,GACT,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACzE,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAGzD,+EAA+E;AAC/E,+BAA+B;AAC/B,+EAA+E;AAE/E;;;;;;;;;;GAUG;AACH,MAAM,UAAU,IAAI,CAAqB,QAAW,EAAE,MAAwB;IAC5E,OAAO,UAAU,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;AACtC,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,eAAe,CAAqB,MAAe;IACjE,MAAM,aAAa,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;IAEpD,OAAO,cAAc,CAAC,aAAa,CAAM,CAAC;AAC5C,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,aAAa,CAAC,KAAY,EAAE,MAAY;IACtD,MAAM,WAAW,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC;IAChD,MAAM,UAAU,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;IAEjD,QAAQ,UAAU,EAAE,CAAC;QACnB,KAAK,WAAW,CAAC,CAAC,CAAC;YACjB,2EAA2E;YAC3E,MAAM,UAAU,GAAG,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,WAAW,CAAE,CAAC;YAEhE,OAAO,YAAY,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;QAC/C,CAAC;QAED,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,OAAO,SAAS,CAAC,WAAW,CAAC,CAAC;QAChC,CAAC;QAED,KAAK,cAAc,CAAC,CAAC,CAAC;YACpB,OAAO,eAAe,CAAC,WAAW,CAAC,CAAC;QACtC,CAAC;QAED,KAAK,iBAAiB,CAAC,CAAC,CAAC;YACvB,OAAO,cAAc,CAAC,WAAW,CAAC,CAAC;QACrC,CAAC;QAED;YACE,MAAM,IAAI,
|
|
1
|
+
{"version":3,"file":"relation.js","sourceRoot":"","sources":["../src/relation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,OAAO,EACL,cAAc,EACd,WAAW,EACX,eAAe,EACf,YAAY,EACZ,UAAU,EACV,cAAc,EACd,SAAS,EACT,SAAS,EACT,qBAAqB,EACrB,mBAAmB,EACnB,qBAAqB,EACrB,MAAM,EACN,iBAAiB,EACjB,QAAQ,GACT,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACzE,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAGzD,+EAA+E;AAC/E,+BAA+B;AAC/B,+EAA+E;AAE/E;;;;;;;;;;GAUG;AACH,MAAM,UAAU,IAAI,CAAqB,QAAW,EAAE,MAAwB;IAC5E,OAAO,UAAU,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;AACtC,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,eAAe,CAAqB,MAAe;IACjE,MAAM,aAAa,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;IAEpD,OAAO,cAAc,CAAC,aAAa,CAAM,CAAC;AAC5C,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,aAAa,CAAC,KAAY,EAAE,MAAY;IACtD,MAAM,WAAW,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC;IAChD,MAAM,UAAU,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;IAEjD,QAAQ,UAAU,EAAE,CAAC;QACnB,KAAK,WAAW,CAAC,CAAC,CAAC;YACjB,2EAA2E;YAC3E,MAAM,UAAU,GAAG,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,WAAW,CAAE,CAAC;YAEhE,OAAO,YAAY,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;QAC/C,CAAC;QAED,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,OAAO,SAAS,CAAC,WAAW,CAAC,CAAC;QAChC,CAAC;QAED,KAAK,cAAc,CAAC,CAAC,CAAC;YACpB,OAAO,eAAe,CAAC,WAAW,CAAC,CAAC;QACtC,CAAC;QAED,KAAK,iBAAiB,CAAC,CAAC,CAAC;YACvB,OAAO,cAAc,CAAC,WAAW,CAAC,CAAC;QACrC,CAAC;QAED;YACE,MAAM,IAAI,YAAY,CAAC,EAAE,OAAO,EAAE,gCAAgC,UAAU,EAAE,EAAE,CAAC,CAAC;IACtF,CAAC;AACH,CAAC;AAED,+EAA+E;AAC/E,mBAAmB;AACnB,+EAA+E;AAE/E;;;;;;;;;;GAUG;AACH,MAAM,UAAU,kBAAkB,CAAC,KAAY,EAAE,QAAkB,EAAE,QAAkB;IACrF,MAAM,IAAI,GAAG,YAAY,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IAE3C,MAAM,aAAa,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;IAC1C,MAAM,oBAAoB,GAAG,UAAU,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAE5D,MAAM,OAAO,GAAuB,EAAE,CAAC;IAEvC,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;QAC1C,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;YACpB,SAAS;QACX,CAAC;QAED,gDAAgD;QAChD,IAAI,MAAM,KAAK,oBAAoB,EAAE,CAAC;YACpC,SAAS;QACX,CAAC;QAED,MAAM,iBAAiB,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;QAExD,IAAI,iBAAiB,KAAK,aAAa,EAAE,CAAC;YACxC,SAAS;QACX,CAAC;QAED,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;IAC7C,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,+EAA+E;AAC/E,UAAU;AACV,+EAA+E;AAE/E;;;;;;;;GAQG;AACH,MAAM,UAAU,2BAA2B,CAAC,KAAY,EAAE,YAAsB;IAC9E,oDAAoD;IACpD,IAAI,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;QACzB,OAAO;IACT,CAAC;IAED,6EAA6E;IAC7E,MAAM,kBAAkB,GAAG,UAAU,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;IAE9D,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,kBAAkB,CAAC,EAAE,CAAC;QAC9C,yDAAyD;QACzD,OAAO;IACT,CAAC;IAED,MAAM,YAAY,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,kBAAkB,CAAE,CAAC;IAElE,iDAAiD;IACjD,mEAAmE;IACnE,+DAA+D;IAC/D,MAAM,aAAa,GAAG,IAAI,GAAG,CAAW,CAAC,kBAAkB,CAAC,CAAC,CAAC;IAC9D,MAAM,aAAa,GAAG,IAAI,GAAG,EAAY,CAAC;IAE1C,KAAK,MAAM,SAAS,IAAI,YAAY,CAAC,OAAO,EAAE,CAAC;QAC7C,KAAK,MAAM,MAAM,IAAI,SAAS,CAAC,KAAK,EAAE,CAAC;YACrC,IAAI,MAAM,KAAK,kBAAkB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,YAAY,EAAE,CAAC;gBACtG,SAAS;YACX,CAAC;YAED,MAAM,QAAQ,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;YAEzC,IAAI,YAAY,CAAC,KAAK,EAAE,QAAQ,EAAE,cAAc,CAAC,EAAE,CAAC;gBAClD,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAC5B,CAAC;iBAAM,CAAC;gBACN,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAC5B,CAAC;QACH,CAAC;IACH,CAAC;IAED,uEAAuE;IACvE,yEAAyE;IACzE,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAY,CAAC;IAE7C,KAAK,MAAM,MAAM,IAAI,aAAa,EAAE,CAAC;QACnC,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAE,CAAC;QAElD,KAAK,MAAM,SAAS,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;YACzC,KAAK,MAAM,QAAQ,IAAI,SAAS,CAAC,QAAQ,EAAE,CAAC;gBAC1C,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YACjC,CAAC;QACH,CAAC;IACH,CAAC;IAED,6EAA6E;IAC7E,KAAK,MAAM,MAAM,IAAI,aAAa,EAAE,CAAC;QACnC,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAC/B,CAAC;IAED,2CAA2C;IAC3C,KAAK,MAAM,MAAM,IAAI,aAAa,EAAE,CAAC;QACnC,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAC/B,CAAC;IAED,qFAAqF;IACrF,KAAK,MAAM,QAAQ,IAAI,gBAAgB,EAAE,CAAC;QACxC,aAAa,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IACjC,CAAC;AACH,CAAC"}
|
package/dist/scheduler.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scheduler.d.ts","sourceRoot":"","sources":["../src/scheduler.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"scheduler.d.ts","sourceRoot":"","sources":["../src/scheduler.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAMxC;;GAEG;AACH,OAAO,CAAC,MAAM,oBAAoB,EAAE,OAAO,MAAM,CAAC;AAElD;;;;;GAKG;AACH,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG;IAAE,CAAC,oBAAoB,CAAC,EAAE,IAAI,CAAA;CAAE,CAAC;AAMtE;;;;;;;;;;;;GAYG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,CAE1D;AAMD;;GAEG;AACH,eAAO,MAAM,OAAO,eAA4B,CAAC;AAEjD;;GAEG;AACH,eAAO,MAAM,QAAQ,eAA6B,CAAC;AAEnD;;;;;;;GAOG;AACH,eAAO,MAAM,KAAK,eAA0B,CAAC;AAE7C;;GAEG;AACH,eAAO,MAAM,SAAS,eAA8B,CAAC;AAErD;;;;;;;GAOG;AACH,eAAO,MAAM,MAAM,eAA2B,CAAC;AAE/C;;GAEG;AACH,eAAO,MAAM,UAAU,eAA+B,CAAC;AAEvD;;GAEG;AACH,eAAO,MAAM,IAAI,eAAyB,CAAC;AAM3C;;;;GAIG;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAElE;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG;IAC1B;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,QAAQ,CAAC,EAAE,aAAa,CAAC;IAEzB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAE3B;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;CAC3B,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG;IACvB;;OAEG;IACH,MAAM,EAAE,YAAY,CAAC;IAErB;;OAEG;IACH,QAAQ,EAAE,aAAa,CAAC;IAExB;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,MAAM,EAAE,MAAM,EAAE,CAAC;IAEjB;;OAEG;IACH,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB,CAAC;AAMF;;;;;;;;;;;;GAYG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,IAAI,CAoB3F;AAMD;;;;;;;;;;;;GAYG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,EAAE,aAAa,GAAG,IAAI,CASvG;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,EAAE,aAAa,GAAG,IAAI,CAQtG;AA4LD;;;;;;;;;;;;GAYG;AACH,wBAAsB,OAAO,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAoBzD;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,GAAG,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAOtC;AAyBD;;;;;;;;;;;;GAYG;AACH,wBAAsB,IAAI,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAkBtD"}
|
package/dist/scheduler.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { assert, Duplicate, InvalidArgument, InvalidState, NotFound } from "./error.js";
|
|
1
2
|
import { flushEvents } from "./event.js";
|
|
2
3
|
// ============================================================================
|
|
3
4
|
// Schedule Definition
|
|
@@ -78,12 +79,8 @@ export const Last = defineSchedule("Last");
|
|
|
78
79
|
export function addSystem(world, runner, options) {
|
|
79
80
|
// Derive system name from function name or explicit option
|
|
80
81
|
const name = options?.name ?? runner.name;
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
}
|
|
84
|
-
if (world.systems.byId.has(name)) {
|
|
85
|
-
throw new Error(`System "${name}" already registered`);
|
|
86
|
-
}
|
|
82
|
+
assert(name && name !== "anonymous", InvalidArgument, { expected: "named system function or name option" });
|
|
83
|
+
assert(!world.systems.byId.has(name), Duplicate, { resource: "System", id: name });
|
|
87
84
|
// Normalize before/after constraints to arrays for consistent handling
|
|
88
85
|
const before = options?.before;
|
|
89
86
|
const after = options?.after;
|
|
@@ -114,12 +111,8 @@ export function addSystem(world, runner, options) {
|
|
|
114
111
|
*/
|
|
115
112
|
export function insertScheduleBefore(world, schedule, anchor) {
|
|
116
113
|
const idx = world.schedules.pipeline.indexOf(anchor);
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
}
|
|
120
|
-
if (world.schedules.pipeline.includes(schedule)) {
|
|
121
|
-
throw new Error(`Schedule "${schedule}" already in pipeline`);
|
|
122
|
-
}
|
|
114
|
+
assert(idx !== -1, NotFound, { resource: "Schedule", id: anchor, context: "pipeline" });
|
|
115
|
+
assert(!world.schedules.pipeline.includes(schedule), Duplicate, { resource: "Schedule", id: schedule });
|
|
123
116
|
world.schedules.pipeline.splice(idx, 0, schedule);
|
|
124
117
|
world.schedules.dirty = true;
|
|
125
118
|
}
|
|
@@ -138,12 +131,8 @@ export function insertScheduleBefore(world, schedule, anchor) {
|
|
|
138
131
|
*/
|
|
139
132
|
export function insertScheduleAfter(world, schedule, anchor) {
|
|
140
133
|
const idx = world.schedules.pipeline.indexOf(anchor);
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
}
|
|
144
|
-
if (world.schedules.pipeline.includes(schedule)) {
|
|
145
|
-
throw new Error(`Schedule "${schedule}" already in pipeline`);
|
|
146
|
-
}
|
|
134
|
+
assert(idx !== -1, NotFound, { resource: "Schedule", id: anchor, context: "pipeline" });
|
|
135
|
+
assert(!world.schedules.pipeline.includes(schedule), Duplicate, { resource: "Schedule", id: schedule });
|
|
147
136
|
world.schedules.pipeline.splice(idx + 1, 0, schedule);
|
|
148
137
|
world.schedules.dirty = true;
|
|
149
138
|
}
|
|
@@ -177,7 +166,11 @@ function buildSchedule(world, scheduleLabel) {
|
|
|
177
166
|
for (const [name, meta] of scheduleSystems) {
|
|
178
167
|
for (const beforeName of meta.before) {
|
|
179
168
|
if (!scheduleSystems.has(beforeName)) {
|
|
180
|
-
throw new
|
|
169
|
+
throw new NotFound({
|
|
170
|
+
resource: "System",
|
|
171
|
+
id: beforeName,
|
|
172
|
+
context: `"${name}" before constraint in schedule "${scheduleLabel}"`,
|
|
173
|
+
});
|
|
181
174
|
}
|
|
182
175
|
// "A before B" means edge A -> B (A must run first)
|
|
183
176
|
adjacency.get(name).push(beforeName);
|
|
@@ -185,7 +178,11 @@ function buildSchedule(world, scheduleLabel) {
|
|
|
185
178
|
}
|
|
186
179
|
for (const afterName of meta.after) {
|
|
187
180
|
if (!scheduleSystems.has(afterName)) {
|
|
188
|
-
throw new
|
|
181
|
+
throw new NotFound({
|
|
182
|
+
resource: "System",
|
|
183
|
+
id: afterName,
|
|
184
|
+
context: `"${name}" after constraint in schedule "${scheduleLabel}"`,
|
|
185
|
+
});
|
|
189
186
|
}
|
|
190
187
|
// "A after B" means edge B -> A (B must run first)
|
|
191
188
|
adjacency.get(afterName).push(name);
|
|
@@ -220,7 +217,7 @@ function buildSchedule(world, scheduleLabel) {
|
|
|
220
217
|
remaining.push(name);
|
|
221
218
|
}
|
|
222
219
|
}
|
|
223
|
-
throw new
|
|
220
|
+
throw new InvalidState({ message: `Circular dependency in schedule "${scheduleLabel}": ${remaining.join(", ")}` });
|
|
224
221
|
}
|
|
225
222
|
world.schedules.byId.set(scheduleLabel, result);
|
|
226
223
|
}
|
package/dist/scheduler.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scheduler.js","sourceRoot":"","sources":["../src/scheduler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAoBzC,+EAA+E;AAC/E,sBAAsB;AACtB,+EAA+E;AAE/E;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,OAAO,IAAqB,CAAC;AAC/B,CAAC;AAED,+EAA+E;AAC/E,2BAA2B;AAC3B,+EAA+E;AAE/E;;GAEG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC;AAEjD;;GAEG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,cAAc,CAAC,UAAU,CAAC,CAAC;AAEnD;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,KAAK,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;AAE7C;;GAEG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,cAAc,CAAC,WAAW,CAAC,CAAC;AAErD;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC;AAE/C;;GAEG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,cAAc,CAAC,YAAY,CAAC,CAAC;AAEvD;;GAEG;AACH,MAAM,CAAC,MAAM,IAAI,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;AAoE3C,+EAA+E;AAC/E,sBAAsB;AACtB,+EAA+E;AAE/E;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,SAAS,CAAC,KAAY,EAAE,MAAoB,EAAE,OAAuB;IACnF,2DAA2D;IAC3D,MAAM,IAAI,GAAG,OAAO,EAAE,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC;IAE1C,
|
|
1
|
+
{"version":3,"file":"scheduler.js","sourceRoot":"","sources":["../src/scheduler.ts"],"names":[],"mappings":"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"}
|