@vworlds/vecs 1.0.44 → 1.0.46

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 (136) hide show
  1. package/README.md +7 -1
  2. package/dist/component.d.ts +57 -51
  3. package/dist/component.js +25 -9
  4. package/dist/component.js.map +1 -1
  5. package/dist/component_meta.d.ts +71 -66
  6. package/dist/component_meta.js +331 -34
  7. package/dist/component_meta.js.map +1 -1
  8. package/dist/dsl.js +1 -1
  9. package/dist/dsl.js.map +1 -1
  10. package/dist/entity/entity.base.js +4 -0
  11. package/dist/entity/entity.base.js.map +1 -1
  12. package/dist/entity/entity.components.d.ts +39 -27
  13. package/dist/entity/entity.components.js +258 -74
  14. package/dist/entity/entity.components.js.map +1 -1
  15. package/dist/entity/entity.d.ts +1 -2
  16. package/dist/entity/entity.js +2 -3
  17. package/dist/entity/entity.js.map +1 -1
  18. package/dist/entity/entity.lifecycle.d.ts +7 -1
  19. package/dist/entity/entity.lifecycle.js +40 -53
  20. package/dist/entity/entity.lifecycle.js.map +1 -1
  21. package/dist/entity/entity.queries.js +30 -0
  22. package/dist/entity/entity.queries.js.map +1 -1
  23. package/dist/entity/entity.relationships.d.ts +4 -0
  24. package/dist/entity/entity.relationships.js +18 -10
  25. package/dist/entity/entity.relationships.js.map +1 -1
  26. package/dist/index.d.ts +7 -4
  27. package/dist/index.js +4 -2
  28. package/dist/index.js.map +1 -1
  29. package/dist/inject.d.ts +63 -14
  30. package/dist/inject.js +165 -89
  31. package/dist/inject.js.map +1 -1
  32. package/dist/modules/identity.js +2 -2
  33. package/dist/modules/identity.js.map +1 -1
  34. package/dist/modules/implements.js +2 -2
  35. package/dist/modules/implements.js.map +1 -1
  36. package/dist/modules/pipeline.js +5 -5
  37. package/dist/modules/pipeline.js.map +1 -1
  38. package/dist/modules/relationship_types.d.ts +70 -3
  39. package/dist/modules/relationship_types.js +70 -3
  40. package/dist/modules/relationship_types.js.map +1 -1
  41. package/dist/modules/relationships.d.ts +31 -8
  42. package/dist/modules/relationships.js +120 -30
  43. package/dist/modules/relationships.js.map +1 -1
  44. package/dist/modules/singleton.js +2 -2
  45. package/dist/modules/singleton.js.map +1 -1
  46. package/dist/modules/snapshot.d.ts +26 -0
  47. package/dist/modules/snapshot.js +45 -0
  48. package/dist/modules/snapshot.js.map +1 -0
  49. package/dist/modules/snapshot_types.d.ts +85 -0
  50. package/dist/modules/snapshot_types.js +130 -0
  51. package/dist/modules/snapshot_types.js.map +1 -0
  52. package/dist/package.json +2 -2
  53. package/dist/query/callbacks.d.ts +9 -7
  54. package/dist/query/callbacks.js +27 -41
  55. package/dist/query/callbacks.js.map +1 -1
  56. package/dist/query/grouped_query.js +7 -7
  57. package/dist/query/grouped_query.js.map +1 -1
  58. package/dist/query/grouping.d.ts +6 -2
  59. package/dist/query/grouping.js +84 -15
  60. package/dist/query/grouping.js.map +1 -1
  61. package/dist/query/query.d.ts +4 -4
  62. package/dist/query/query.js +37 -14
  63. package/dist/query/query.js.map +1 -1
  64. package/dist/snapshot/capture.d.ts +1 -0
  65. package/dist/snapshot/capture.js +212 -0
  66. package/dist/snapshot/capture.js.map +1 -0
  67. package/dist/snapshot/clone.d.ts +1 -0
  68. package/dist/snapshot/clone.js +107 -0
  69. package/dist/snapshot/clone.js.map +1 -0
  70. package/dist/snapshot/index.d.ts +5 -0
  71. package/dist/snapshot/index.js +21 -0
  72. package/dist/snapshot/index.js.map +1 -0
  73. package/dist/snapshot/preflight.d.ts +1 -0
  74. package/dist/snapshot/preflight.js +40 -0
  75. package/dist/snapshot/preflight.js.map +1 -0
  76. package/dist/snapshot/restore.d.ts +1 -0
  77. package/dist/snapshot/restore.js +111 -0
  78. package/dist/snapshot/restore.js.map +1 -0
  79. package/dist/snapshot/types.d.ts +135 -0
  80. package/dist/snapshot/types.js +26 -0
  81. package/dist/snapshot/types.js.map +1 -0
  82. package/dist/system.d.ts +3 -1
  83. package/dist/system.js +33 -23
  84. package/dist/system.js.map +1 -1
  85. package/dist/terms/all_term.js +19 -0
  86. package/dist/terms/all_term.js.map +1 -1
  87. package/dist/terms/any_term.js +19 -0
  88. package/dist/terms/any_term.js.map +1 -1
  89. package/dist/terms/not_term.js +4 -0
  90. package/dist/terms/not_term.js.map +1 -1
  91. package/dist/terms/target_term.d.ts +1 -2
  92. package/dist/terms/target_term.js +2 -4
  93. package/dist/terms/target_term.js.map +1 -1
  94. package/dist/terms/term.d.ts +2 -0
  95. package/dist/terms/term.js +59 -10
  96. package/dist/terms/term.js.map +1 -1
  97. package/dist/util/array_map.d.ts +43 -12
  98. package/dist/util/array_map.js +90 -41
  99. package/dist/util/array_map.js.map +1 -1
  100. package/dist/util/dense_set.js +26 -0
  101. package/dist/util/dense_set.js.map +1 -1
  102. package/dist/world/world.base.js +12 -0
  103. package/dist/world/world.base.js.map +1 -1
  104. package/dist/world/world.d.ts +7 -0
  105. package/dist/world/world.deferred.js +17 -0
  106. package/dist/world/world.deferred.js.map +1 -1
  107. package/dist/world/world.entities.d.ts +13 -2
  108. package/dist/world/world.entities.js +16 -2
  109. package/dist/world/world.entities.js.map +1 -1
  110. package/dist/world/world.js +15 -3
  111. package/dist/world/world.js.map +1 -1
  112. package/dist/world/world.pipeline.d.ts +2 -2
  113. package/dist/world/world.pipeline.js +4 -2
  114. package/dist/world/world.pipeline.js.map +1 -1
  115. package/dist/world/world.queries.d.ts +7 -0
  116. package/dist/world/world.queries.js +52 -0
  117. package/dist/world/world.queries.js.map +1 -1
  118. package/dist/world/world.transfers.d.ts +137 -0
  119. package/dist/world/world.transfers.js +188 -0
  120. package/dist/world/world.transfers.js.map +1 -0
  121. package/docs/README.md +18 -6
  122. package/docs/components.md +91 -48
  123. package/docs/concepts.md +21 -17
  124. package/docs/design-guide.md +125 -89
  125. package/docs/entities.md +62 -72
  126. package/docs/execution-model.md +26 -10
  127. package/docs/getting-started.md +6 -6
  128. package/docs/glossary.md +19 -10
  129. package/docs/modules.md +8 -8
  130. package/docs/queries-and-filters.md +15 -10
  131. package/docs/relationships.md +250 -115
  132. package/docs/snapshots.md +181 -0
  133. package/docs/systems.md +64 -21
  134. package/docs/utilities.md +10 -6
  135. package/package.json +2 -2
  136. package/skills/vecs/SKILL.md +5 -4
@@ -1,4 +1,4 @@
1
- import { type ComponentClass, type ComponentInstance, type ComponentRef, type ComponentType, type RetargetHandler } from "../component_meta.js";
1
+ import { type ComponentClass, type ComponentInstance, type ComponentRef, type ComponentType, type HookEvent, type HookEventMap } from "../component_meta.js";
2
2
  import { Relationship } from "../component_meta.js";
3
3
  import { Relationships } from "./entity.relationships.js";
4
4
  import type { EID, Entity } from "./entity.js";
@@ -9,18 +9,28 @@ export declare class Components extends Relationships {
9
9
  * Idempotent. Does not fire `onSet` -- use {@link set} when you want to apply
10
10
  * data and notify watchers.
11
11
  *
12
+ * Relationship components require an explicit `target`. The target is
13
+ * resolved eagerly via {@link World.entity}: any {@link ComponentRef} that
14
+ * resolves to an existing entity is accepted, but a ref that does not yet
15
+ * resolve throws. Non-relationship components ignore `target` and throw when
16
+ * one is supplied.
17
+ *
12
18
  * @param Class - Component class to instantiate.
19
+ * @param target - Relationship target. Any {@link ComponentRef} that resolves
20
+ * to an existing entity; required for {@link Relationship} components.
13
21
  * @returns This entity, for chaining.
14
22
  */
15
- add<C extends ComponentClass>(Class: C): this;
23
+ add<C extends ComponentClass>(Class: C, ...target: InstanceType<C> extends Relationship ? [target: ComponentRef] : []): this;
16
24
  /**
17
25
  * Attach a component by numeric type id.
18
26
  *
19
27
  * @param type - Numeric component type id.
28
+ * @param target - Relationship target; any {@link ComponentRef} that resolves
29
+ * to an existing entity. Ignored for non-relationship components.
20
30
  * @returns This entity, for chaining.
21
31
  */
22
- add(ceid: EID): this;
23
- add(entity: Entity): this;
32
+ add(ceid: EID, target?: ComponentRef): this;
33
+ add(entity: Entity, target?: ComponentRef): this;
24
34
  /**
25
35
  * Attach an existing component instance to this entity and store that exact
26
36
  * object. If a component of the same registered class already exists, it is
@@ -91,17 +101,6 @@ export declare class Components extends Relationships {
91
101
  ensure(ceid: EID, callback: (component: ComponentInstance) => void): Readonly<ComponentInstance>;
92
102
  ensure(entity: Entity): ComponentInstance;
93
103
  ensure(entity: Entity, callback: (component: ComponentInstance) => void): Readonly<ComponentInstance>;
94
- /**
95
- * Return the target of relationship `Class`, creating and targeting a new
96
- * independent entity when the relationship is absent.
97
- *
98
- * The relationship class must already be registered in this world. Repeated
99
- * calls during deferred execution return the same pending target.
100
- *
101
- * @param Class - Registered relationship component class.
102
- * @returns The existing or newly created relationship target.
103
- */
104
- ensureTarget(this: Entity, Class: ComponentType<Relationship>): Entity;
105
104
  /**
106
105
  * Mark a component type as having changed, queueing the corresponding `onSet` / `update`
107
106
  * notifications.
@@ -112,7 +111,7 @@ export declare class Components extends Relationships {
112
111
  * @param typeOrClass - Component class or numeric type id whose data changed.
113
112
  * @returns This entity, for chaining.
114
113
  */
115
- modified(ref: ComponentRef): this;
114
+ modified(this: Entity, ref: ComponentRef): this;
116
115
  /**
117
116
  * Detach a component from this entity.
118
117
  *
@@ -120,16 +119,26 @@ export declare class Components extends Relationships {
120
119
  * component until the queue drains. When applied, queries fire `exit`
121
120
  * callbacks first and the `onRemove` hook fires last.
122
121
  *
122
+ * Relationship components take an explicit `target` to remove one edge. The
123
+ * target is resolved eagerly via {@link World.entity}: any
124
+ * {@link ComponentRef} that resolves to an existing entity is accepted, but
125
+ * a ref that does not yet resolve throws. Omit `target` to remove every edge
126
+ * of the relationship.
127
+ *
123
128
  * @param Class - Component class to detach.
129
+ * @param target - Relationship target; any {@link ComponentRef} that resolves
130
+ * to an existing entity. Ignored for non-relationship components.
124
131
  */
125
- remove<C extends ComponentType>(Class: C): void;
132
+ remove<C extends ComponentType>(Class: C, ...target: InstanceType<C> extends Relationship ? [target?: ComponentRef] : []): void;
126
133
  /**
127
134
  * Detach a component by numeric type id.
128
135
  *
129
136
  * @param type - Numeric component type id.
137
+ * @param target - Relationship target; any {@link ComponentRef} that resolves
138
+ * to an existing entity. Ignored for non-relationship components.
130
139
  */
131
- remove(ceid: EID): void;
132
- remove(entity: Entity): void;
140
+ remove(ceid: EID, target?: ComponentRef): void;
141
+ remove(entity: Entity, target?: ComponentRef): void;
133
142
  /**
134
143
  * Attach a component (creating it if necessary), copy `props` onto the
135
144
  * instance, and fire the `onSet` hook plus any `update` callbacks for the
@@ -152,15 +161,18 @@ export declare class Components extends Relationships {
152
161
  */
153
162
  set(ceid: EID, props: Partial<ComponentInstance>): this;
154
163
  set(entity: Entity, props: Partial<ComponentInstance>): this;
164
+ /** Assign relationship data while ignoring all target-storage spellings. */
165
+ private _assignRelationshipProps;
155
166
  private _throwIfInterface;
156
- onAdd(handler: (entity: Entity, c: ComponentInstance) => void): this;
157
- onRemove(handler: (entity: Entity, c: ComponentInstance) => void): this;
167
+ private _assertTargetWorld;
168
+ private _emitTargetAdd;
169
+ private _emitTargetRemove;
158
170
  /**
159
- * Register a handler fired after this relationship moves between existing targets.
160
- *
161
- * @param handler - Receives the source entity, previous target, and current target.
162
- * @returns This entity, for chaining.
171
+ * Register a handler for a hook event on this entity's component meta.
172
+ * See {@link ComponentMeta.on} for the event list and semantics. Returns this
173
+ * entity for chaining.
163
174
  */
164
- onRetarget(handler: RetargetHandler): this;
165
- onSet(handler: (entity: Entity, c: ComponentInstance) => void): this;
175
+ on<E extends HookEvent>(event: E, handler: HookEventMap[E], insert?: boolean): this;
176
+ /** Remove a previously-registered handler by reference. See {@link ComponentMeta.off}. */
177
+ off<E extends HookEvent>(event: E, handler: HookEventMap[E]): this;
166
178
  }
@@ -1,3 +1,4 @@
1
+ import { _slotHandlers, } from "../component_meta.js";
1
2
  import { Relationships } from "./entity.relationships.js";
2
3
  export class Components extends Relationships {
3
4
  /**
@@ -6,19 +7,23 @@ export class Components extends Relationships {
6
7
  * caller had performed a `set` operation.
7
8
  */
8
9
  _attach(meta, component) {
9
- const entity = this;
10
- if (meta._pendingEnsures?.get(entity) === component) {
11
- meta._pendingEnsures.delete(entity);
10
+ if (meta._pendingEnsures?.get(this) === component) {
11
+ meta._pendingEnsures.delete(this);
12
12
  }
13
13
  if (this._destroyed) {
14
14
  return;
15
15
  }
16
+ if (meta.isRelationship) {
17
+ throw new Error("Entity.attach cannot attach Relationship components; add explicit targets");
18
+ }
16
19
  const existing = this._components.get(meta.eid);
17
- const oldTarget = meta.isRelationship
18
- ? existing?.target
19
- : undefined;
20
+ if (existing !== undefined && existing !== component) {
21
+ meta._onPolicyRemove?.(this, existing);
22
+ }
20
23
  this._storeComponent(meta, component, existing === undefined);
21
- this._updateIncoming(meta, oldTarget, component.target);
24
+ if (existing !== undefined && existing !== component) {
25
+ meta._onPolicyAdd?.(this, component);
26
+ }
22
27
  this._notifyComponentSet(meta, component, existing !== undefined);
23
28
  }
24
29
  /**
@@ -67,18 +72,17 @@ export class Components extends Relationships {
67
72
  /** @internal Apply one remove without expanding interface aliases. */
68
73
  _removeRaw(meta, c) {
69
74
  if (meta.isRelationship) {
70
- this._removeIncoming(c.target, meta.eid);
75
+ this._detachRelationship(meta, c);
76
+ return;
71
77
  }
72
78
  this._dirtyComponentBitmask.deleteBit(meta.bitPtr);
73
79
  this.componentBitmask.deleteBit(meta.bitPtr);
74
80
  this.world._notifyComponentRemoved(meta.eid, this);
75
81
  this._components.delete(meta.eid);
76
82
  this.world._notifyComponentChanged(meta.eid, this);
77
- meta._decrementUsage();
78
- const removeHandlers = meta._onRemoveHandlers;
79
- if (removeHandlers) {
80
- removeHandlers.forEach((handler) => handler(this, c));
81
- }
83
+ meta._detachCarrier(this);
84
+ meta._onPolicyRemove?.(this, c);
85
+ meta._onRemove?.(this, c);
82
86
  }
83
87
  /**
84
88
  * @internal Apply a `Set` command: create the component if missing, assign
@@ -89,23 +93,49 @@ export class Components extends Relationships {
89
93
  if (this._destroyed) {
90
94
  return;
91
95
  }
96
+ if (meta.isRelationship) {
97
+ const relationship = this._components.get(meta.eid);
98
+ if (!relationship || props === undefined) {
99
+ return;
100
+ }
101
+ if (this._assignRelationshipProps(relationship, props)) {
102
+ this._notifyComponentSet(meta, relationship, true);
103
+ }
104
+ return;
105
+ }
92
106
  const existing = this._components.get(meta.eid);
93
- const oldTarget = meta.isRelationship
94
- ? existing?.target
95
- : undefined;
96
- const c = existing ?? this._new(meta, props);
107
+ const c = existing ?? this._materialize(meta, props);
97
108
  if (props !== undefined) {
98
109
  if (existing) {
99
110
  Object.assign(c, props);
100
111
  }
101
- const newTarget = c.target;
102
- this._updateIncoming(meta, oldTarget, newTarget);
103
112
  this._notifyComponentSet(meta, c, existing !== undefined);
104
113
  }
105
114
  }
106
- add(ref) {
115
+ add(ref, target) {
107
116
  const componentMeta = this.world.entity(ref).meta;
108
117
  this._throwIfInterface(componentMeta, "add");
118
+ if (componentMeta.isRelationship) {
119
+ if (target === undefined) {
120
+ throw new Error("Entity.add requires a target for Relationship components");
121
+ }
122
+ const targetEntity = this.world.entity(target);
123
+ if (this.world.deferred) {
124
+ this.world._enqueue({
125
+ kind: 6 /* CommandKind.AddTarget */,
126
+ entity: this,
127
+ meta: componentMeta,
128
+ target: targetEntity,
129
+ });
130
+ }
131
+ else {
132
+ this._addTarget(componentMeta, targetEntity);
133
+ }
134
+ return this;
135
+ }
136
+ if (target !== undefined) {
137
+ throw new Error("Entity.add target argument requires a Relationship component");
138
+ }
109
139
  if (this.world.deferred) {
110
140
  this.world._enqueue({
111
141
  kind: 1 /* CommandKind.Set */,
@@ -124,6 +154,9 @@ export class Components extends Relationships {
124
154
  const instance = component ?? classOrComponent;
125
155
  const componentMeta = this.world.entity(ComponentKey).meta;
126
156
  this._throwIfInterface(componentMeta, "attach");
157
+ if (componentMeta.isRelationship) {
158
+ throw new Error("Entity.attach cannot attach Relationship components; add explicit targets");
159
+ }
127
160
  this._attach_or_enqueue(componentMeta, instance);
128
161
  return this;
129
162
  }
@@ -177,33 +210,6 @@ export class Components extends Relationships {
177
210
  }
178
211
  return this._ensureMissingInstance(componentMeta, callback);
179
212
  }
180
- /**
181
- * Return the target of relationship `Class`, creating and targeting a new
182
- * independent entity when the relationship is absent.
183
- *
184
- * The relationship class must already be registered in this world. Repeated
185
- * calls during deferred execution return the same pending target.
186
- *
187
- * @param Class - Registered relationship component class.
188
- * @returns The existing or newly created relationship target.
189
- */
190
- ensureTarget(Class) {
191
- if (this._destroyed) {
192
- throw new Error(`Cannot ensure relationship target on destroyed entity ${this.eid}`);
193
- }
194
- const componentMeta = this.world.entity(Class).meta;
195
- if (!componentMeta.isRelationship) {
196
- throw new Error("Entity.ensureTarget requires a Relationship component");
197
- }
198
- const existing = this._get(componentMeta.eid);
199
- if (existing) {
200
- return existing.target;
201
- }
202
- const relationship = this._ensureMissingInstance(componentMeta, (component) => {
203
- component.target = this.world.entity();
204
- }, false);
205
- return relationship.target;
206
- }
207
213
  /** @internal Return a pending instance, or create and attach one. The caller checked storage. */
208
214
  _ensureMissingInstance(componentMeta, callback, initializePending = true) {
209
215
  const pending = componentMeta._pendingEnsures?.get(this);
@@ -265,9 +271,27 @@ export class Components extends Relationships {
265
271
  this._attach(meta, component);
266
272
  }
267
273
  }
268
- remove(ref) {
274
+ remove(ref, target) {
269
275
  const componentMeta = this.world.entity(ref).meta;
270
276
  this._throwIfInterface(componentMeta, "remove");
277
+ if (target !== undefined) {
278
+ if (!componentMeta.isRelationship) {
279
+ throw new Error("Entity.remove target argument requires a Relationship component");
280
+ }
281
+ const targetEntity = this.world.entity(target);
282
+ if (this.world.deferred) {
283
+ this.world._enqueue({
284
+ kind: 7 /* CommandKind.RemoveTarget */,
285
+ entity: this,
286
+ meta: componentMeta,
287
+ target: targetEntity,
288
+ });
289
+ }
290
+ else {
291
+ this._removeTarget(componentMeta, targetEntity);
292
+ }
293
+ return;
294
+ }
271
295
  if (this.world.deferred) {
272
296
  this.world._enqueue({
273
297
  kind: 3 /* CommandKind.Remove */,
@@ -298,20 +322,113 @@ export class Components extends Relationships {
298
322
  /**
299
323
  * @internal
300
324
  *
301
- * Construct a fresh component of `type`, apply `props`, store it on this
302
- * entity, fire the `onAdd` hook, and route query updates.
325
+ * The canonical component materializer: construct a destination-owned
326
+ * instance of `meta`'s class, assign `data` onto it, and store it on this
327
+ * entity. Every metadata semantic is applied exactly once, in this order:
328
+ * exclusivity eviction of conflicting components, interface-alias eviction
329
+ * and storage, the framework `policyAdd` hook, the public `add` hook, and
330
+ * query-entry notification.
303
331
  *
304
- * If the component type belongs to an exclusivity group, any conflicting
305
- * component already on this entity is removed first.
332
+ * This is the single constructor-and-copy implementation in vecs. Ordinary
333
+ * {@link set} calls it, and so does the cross-world subtree restore
334
+ * (`lib/vecs/src/snapshot/restore.ts`), so a component that
335
+ * arrives in a destination world is indistinguishable from one created by
336
+ * `set` — same alias slots, same exclusivity outcome, same hooks, same
337
+ * notifications.
338
+ *
339
+ * @param meta - Metadata of the component type to materialize.
340
+ * @param data - The instance's own fields. Assignable onto a default-constructed
341
+ * instance, or handed to `construct` for a custom policy.
342
+ * @param construct - Optional factory that builds the instance from `data`,
343
+ * used by owner-declared snapshot policies whose type needs construction
344
+ * beyond `new Class()` plus field assignment. Omit it for the default.
345
+ * @returns The freshly materialized, destination-owned instance.
306
346
  */
307
- _new(meta, props) {
347
+ _materialize(meta, data, construct) {
348
+ const c = construct ? construct(data) : this._constructFrom(meta, data);
349
+ this._storeComponent(meta, c, true);
350
+ return c;
351
+ }
352
+ /** @internal Default construction for {@link _materialize}: `new Class()` plus field assignment. */
353
+ _constructFrom(meta, data) {
308
354
  const c = new meta.Class();
309
- if (props !== undefined) {
310
- Object.assign(c, props);
355
+ if (data != null) {
356
+ Object.assign(c, data);
311
357
  }
312
- this._storeComponent(meta, c, true);
313
358
  return c;
314
359
  }
360
+ /** @internal Apply one relationship-edge addition. */
361
+ _addTarget(meta, target) {
362
+ this._assertTargetWorld(target);
363
+ if (this._destroyed || target._destroyed) {
364
+ return;
365
+ }
366
+ const existing = this._components.get(meta.eid);
367
+ if (existing?._hasTarget(target)) {
368
+ return;
369
+ }
370
+ if (existing && meta.relationshipExclusive) {
371
+ const previous = existing._replaceTarget(target);
372
+ this._removeIncoming(previous, meta.eid);
373
+ this._addIncoming(target, meta.eid);
374
+ const reflectsReplacement = () => this._components.get(meta.eid) === existing &&
375
+ existing._hasTarget(target) &&
376
+ !existing._hasTarget(previous);
377
+ if (!this._emitTargetRemove(meta, existing, previous, reflectsReplacement)) {
378
+ return;
379
+ }
380
+ if (!this._emitTargetAdd(meta, existing, target, reflectsReplacement)) {
381
+ return;
382
+ }
383
+ this._notifyRelationshipChanged(meta, existing);
384
+ return;
385
+ }
386
+ if (existing) {
387
+ existing._addTarget(target);
388
+ this._addIncoming(target, meta.eid);
389
+ const reflectsAdd = () => this._components.get(meta.eid) === existing && existing._hasTarget(target);
390
+ if (!this._emitTargetAdd(meta, existing, target, reflectsAdd)) {
391
+ return;
392
+ }
393
+ this._notifyRelationshipChanged(meta, existing);
394
+ return;
395
+ }
396
+ const relationship = new meta.Class();
397
+ relationship._addTarget(target);
398
+ this._storeRelationship(meta, relationship);
399
+ this._addIncoming(target, meta.eid);
400
+ const reflectsAdd = () => this._components.get(meta.eid) === relationship && relationship._hasTarget(target);
401
+ if (!this._emitTargetAdd(meta, relationship, target, reflectsAdd)) {
402
+ return;
403
+ }
404
+ meta._onAdd?.(this, relationship);
405
+ if (!reflectsAdd()) {
406
+ return;
407
+ }
408
+ this.world._notifyComponentAdded(meta.eid, this);
409
+ }
410
+ /** @internal Apply one relationship-edge removal. */
411
+ _removeTarget(meta, target) {
412
+ this._assertTargetWorld(target);
413
+ if (this._destroyed) {
414
+ return;
415
+ }
416
+ const relationship = this._components.get(meta.eid);
417
+ if (!relationship?._hasTarget(target)) {
418
+ return;
419
+ }
420
+ if (relationship._targetCount() === 1) {
421
+ this._remove(meta);
422
+ return;
423
+ }
424
+ relationship._removeTarget(target);
425
+ this._removeIncoming(target, meta.eid);
426
+ const reflectsRemove = () => this._components.get(meta.eid) === relationship && !relationship._hasTarget(target);
427
+ if (!this._emitTargetRemove(meta, relationship, target, reflectsRemove)) {
428
+ return;
429
+ }
430
+ this._notifyRelationshipChanged(meta, relationship);
431
+ }
315
432
  /** @internal Perform the shared set-side hook and query update routing. */
316
433
  _notifyComponentSet(meta, instance, isUpdate) {
317
434
  this._notifyRaw(meta, instance, isUpdate);
@@ -321,13 +438,55 @@ export class Components extends Relationships {
321
438
  }
322
439
  }
323
440
  }
441
+ /** @internal Detach a whole relationship before exposing its zero-target snapshot to hooks. */
442
+ _detachRelationship(meta, relationship) {
443
+ this._dirtyComponentBitmask.deleteBit(meta.bitPtr);
444
+ this.componentBitmask.deleteBit(meta.bitPtr);
445
+ this.world._notifyComponentRemoved(meta.eid, this);
446
+ this._components.delete(meta.eid);
447
+ this.world._notifyComponentChanged(meta.eid, this);
448
+ meta._detachCarrier(this);
449
+ const targets = relationship._takeTargets();
450
+ for (const target of targets) {
451
+ this._removeIncoming(target, meta.eid);
452
+ }
453
+ for (const target of targets) {
454
+ const reflectsRemove = () => this._components.get(meta.eid) !== relationship && !relationship._hasTarget(target);
455
+ this._emitTargetRemove(meta, relationship, target, reflectsRemove);
456
+ }
457
+ meta._onRemove?.(this, relationship);
458
+ }
459
+ /** @internal Store a newly attached relationship without firing hooks or query entry early. */
460
+ _storeRelationship(meta, relationship) {
461
+ if (meta._exclusive) {
462
+ for (const exclusiveMeta of meta._exclusive) {
463
+ if (this._components.has(exclusiveMeta.eid)) {
464
+ this._remove(exclusiveMeta);
465
+ }
466
+ }
467
+ }
468
+ this._components.set(meta.eid, relationship);
469
+ this.componentBitmask.addBit(meta.bitPtr);
470
+ meta._attachCarrier(this);
471
+ }
472
+ /** Assign relationship data while ignoring all target-storage spellings. */
473
+ _assignRelationshipProps(relationship, props) {
474
+ let assigned = false;
475
+ for (const [key, value] of Object.entries(props)) {
476
+ if (key !== "target" && key !== "targets" && key !== "_targets") {
477
+ relationship[key] = value;
478
+ assigned = true;
479
+ }
480
+ }
481
+ return assigned;
482
+ }
324
483
  /** @internal Perform one set-side hook and query update without expanding aliases. */
325
484
  _notifyRaw(meta, instance, isUpdate) {
326
- meta._onSetHandlers?.forEach((handler) => handler(this, instance));
485
+ meta._onSet?.(this, instance);
327
486
  this._dirtyComponentBitmask.deleteBit(meta.bitPtr);
328
487
  if (isUpdate) {
329
488
  this.world._notifyComponentChanged(meta.eid, this);
330
- this._queries.forEach((q) => q._notifyModified(this, meta.eid, instance));
489
+ this._routeModified(meta.eid, instance);
331
490
  }
332
491
  }
333
492
  /** @internal Store a component instance and perform the shared add-side bookkeeping. */
@@ -361,10 +520,11 @@ export class Components extends Relationships {
361
520
  this._components.set(meta.eid, instance);
362
521
  this.componentBitmask.addBit(meta.bitPtr);
363
522
  if (!existing) {
364
- meta._incrementUsage();
523
+ meta._attachCarrier(this);
365
524
  }
366
525
  if (isAdd && !existing) {
367
- meta._onAddHandlers?.forEach((handler) => handler(this, instance));
526
+ meta._onPolicyAdd?.(this, instance);
527
+ meta._onAdd?.(this, instance);
368
528
  }
369
529
  if (!existing) {
370
530
  this.world._notifyComponentAdded(meta.eid, this);
@@ -375,26 +535,50 @@ export class Components extends Relationships {
375
535
  throw new Error(`Cannot ${op} the abstract interface ${meta.Class.name}; operate via the concrete component`);
376
536
  }
377
537
  }
378
- onAdd(handler) {
379
- this.meta.onAdd(handler);
380
- return this;
538
+ _assertTargetWorld(target) {
539
+ if (target.world !== this.world) {
540
+ throw new Error("Relationship target must belong to the same World as its source");
541
+ }
381
542
  }
382
- onRemove(handler) {
383
- this.meta.onRemove(handler);
384
- return this;
543
+ _emitTargetAdd(meta, relationship, target, isCurrent) {
544
+ // Policy handlers run first; each may mutate the relationship (e.g. an
545
+ // OwnedTarget policy parents the target). If one makes the edge no longer
546
+ // current, abort remaining policies and the public hook.
547
+ if (meta._onTargetPolicyAdd !== undefined) {
548
+ for (const h of _slotHandlers(meta._onTargetPolicyAdd)) {
549
+ h(this, relationship, target);
550
+ if (!isCurrent()) {
551
+ return false;
552
+ }
553
+ }
554
+ }
555
+ meta._onTargetAdd?.(this, relationship, target);
556
+ return isCurrent();
557
+ }
558
+ _emitTargetRemove(meta, relationship, target, isCurrent) {
559
+ if (meta._onTargetPolicyRemove !== undefined) {
560
+ for (const h of _slotHandlers(meta._onTargetPolicyRemove)) {
561
+ h(this, relationship, target);
562
+ if (!isCurrent()) {
563
+ return false;
564
+ }
565
+ }
566
+ }
567
+ meta._onTargetRemove?.(this, relationship, target);
568
+ return isCurrent();
385
569
  }
386
570
  /**
387
- * Register a handler fired after this relationship moves between existing targets.
388
- *
389
- * @param handler - Receives the source entity, previous target, and current target.
390
- * @returns This entity, for chaining.
571
+ * Register a handler for a hook event on this entity's component meta.
572
+ * See {@link ComponentMeta.on} for the event list and semantics. Returns this
573
+ * entity for chaining.
391
574
  */
392
- onRetarget(handler) {
393
- this.meta.onRetarget(handler);
575
+ on(event, handler, insert = false) {
576
+ this.meta.on(event, handler, insert);
394
577
  return this;
395
578
  }
396
- onSet(handler) {
397
- this.meta.onSet(handler);
579
+ /** Remove a previously-registered handler by reference. See {@link ComponentMeta.off}. */
580
+ off(event, handler) {
581
+ this.meta.off(event, handler);
398
582
  return this;
399
583
  }
400
584
  }
@@ -1 +1 @@
1
- {"version":3,"file":"entity.components.js","sourceRoot":"","sources":["../../src/entity/entity.components.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"entity.components.js","sourceRoot":"","sources":["../../src/entity/entity.components.ts"],"names":[],"mappings":"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"}
@@ -20,7 +20,7 @@ export type EntityClass<T extends Entity = Entity> = new (world: World, eid: EID
20
20
  * ## Deferred semantics
21
21
  *
22
22
  * Inside a system body or `forEach` iteration the world is in **deferred
23
- * mode**: `add` / `attach` / `set` / `ensure` / `ensureTarget` / `modified` / `remove` /
23
+ * mode**: `add` / `attach` / `set` / `ensure` / `modified` / `remove` /
24
24
  * `destroy` only enqueue commands. The data layer (the components map and
25
25
  * `componentBitmask`) is mutated when the world drains its queue. Concretely,
26
26
  * while deferred:
@@ -29,7 +29,6 @@ export type EntityClass<T extends Entity = Entity> = new (world: World, eid: EID
29
29
  * - `entity.get(C)` / `entity.getMut(C)` returns `undefined` after `entity.attach(instance)` if C was absent.
30
30
  * - `entity.get(C)` / `entity.getMut(C)` returns the previous value after `entity.set(C, props)`.
31
31
  * - `entity.ensure(C)` returns a mutable component immediately, but `entity.get(C)` does not see it until the queue drains.
32
- * - `entity.ensureTarget(R)` returns its pending target immediately, but `entity.target(R)` does not see it until the queue drains.
33
32
  * - `entity.get(C)` / `entity.getMut(C)` still returns the component after `entity.remove(C)`.
34
33
  *
35
34
  * Outside deferred mode the same calls execute inline and mutations are