@vworlds/vecs 1.0.24 → 1.0.26

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 (76) hide show
  1. package/README.md +29 -778
  2. package/dist/component.d.ts +1 -1
  3. package/dist/component.js +1 -1
  4. package/dist/component.js.map +1 -1
  5. package/dist/component_meta.d.ts +5 -1
  6. package/dist/component_meta.js +10 -0
  7. package/dist/component_meta.js.map +1 -1
  8. package/dist/dsl.d.ts +2 -2
  9. package/dist/entity/entity.base.d.ts +2 -18
  10. package/dist/entity/entity.base.js +2 -20
  11. package/dist/entity/entity.base.js.map +1 -1
  12. package/dist/entity/entity.components.d.ts +1 -0
  13. package/dist/entity/entity.components.js +50 -0
  14. package/dist/entity/entity.components.js.map +1 -1
  15. package/dist/entity/entity.lifecycle.d.ts +3 -3
  16. package/dist/entity/entity.lifecycle.js +6 -9
  17. package/dist/entity/entity.lifecycle.js.map +1 -1
  18. package/dist/entity/entity.relationships.js +2 -2
  19. package/dist/entity/entity.relationships.js.map +1 -1
  20. package/dist/filter.d.ts +1 -0
  21. package/dist/filter.js +3 -2
  22. package/dist/filter.js.map +1 -1
  23. package/dist/index.d.ts +4 -2
  24. package/dist/index.js +4 -2
  25. package/dist/index.js.map +1 -1
  26. package/dist/inject.d.ts +3 -2
  27. package/dist/inject.js.map +1 -1
  28. package/dist/modules/implements.d.ts +14 -0
  29. package/dist/modules/implements.js +98 -0
  30. package/dist/modules/implements.js.map +1 -0
  31. package/dist/package.json +1 -8
  32. package/dist/query/callbacks.d.ts +6 -2
  33. package/dist/query/callbacks.js +5 -2
  34. package/dist/query/callbacks.js.map +1 -1
  35. package/dist/query/query.d.ts +14 -1
  36. package/dist/query/query.js +26 -15
  37. package/dist/query/query.js.map +1 -1
  38. package/dist/system.d.ts +5 -4
  39. package/dist/system.js +17 -6
  40. package/dist/system.js.map +1 -1
  41. package/dist/util/array_map.d.ts +70 -12
  42. package/dist/util/array_map.js +113 -26
  43. package/dist/util/array_map.js.map +1 -1
  44. package/dist/util/bitset.js +0 -17
  45. package/dist/util/bitset.js.map +1 -1
  46. package/dist/util/events.d.ts +42 -12
  47. package/dist/util/events.js +94 -43
  48. package/dist/util/events.js.map +1 -1
  49. package/dist/util/ordered_set.js +43 -19
  50. package/dist/util/ordered_set.js.map +1 -1
  51. package/dist/world/world.deferred.js +2 -0
  52. package/dist/world/world.deferred.js.map +1 -1
  53. package/dist/world/world.entities.d.ts +8 -1
  54. package/dist/world/world.entities.js +25 -6
  55. package/dist/world/world.entities.js.map +1 -1
  56. package/dist/world/world.js +8 -1
  57. package/dist/world/world.js.map +1 -1
  58. package/dist/world/world.queries.js +6 -1
  59. package/dist/world/world.queries.js.map +1 -1
  60. package/dist/world/world.storage.d.ts +2 -2
  61. package/dist/world/world.storage.js +6 -3
  62. package/dist/world/world.storage.js.map +1 -1
  63. package/docs/README.md +50 -0
  64. package/docs/components.md +267 -0
  65. package/docs/concepts.md +86 -0
  66. package/docs/design-guide.md +506 -0
  67. package/docs/entities.md +175 -0
  68. package/docs/execution-model.md +173 -0
  69. package/docs/getting-started.md +215 -0
  70. package/docs/glossary.md +113 -0
  71. package/docs/modules.md +108 -0
  72. package/docs/queries-and-filters.md +187 -0
  73. package/docs/relationships.md +148 -0
  74. package/docs/systems.md +311 -0
  75. package/docs/utilities.md +139 -0
  76. package/package.json +1 -8
@@ -1,13 +1,12 @@
1
1
  /**
2
- * A `Map<number, T>` substitute backed by a sparse JavaScript array.
2
+ * A cheap `Map<number, T>` substitute backed directly by a sparse JavaScript array.
3
3
  *
4
- * For small, dense, non-negative integer key spaces, indexing into a regular
5
- * array is faster than the hash-table lookups performed by the built-in
6
- * `Map`. `ArrayMap` is used inside the ECS to store per-entity component
7
- * instances and per-type metadata.
4
+ * Use this when callers only need random access (`get`, `set`, `has`, `delete`)
5
+ * by non-negative integer keys. Lookups are a single array read and memory usage
6
+ * is one sparse backing array, so it is cheaper than {@link IterableArrayMap}.
8
7
  *
9
- * Empty slots are represented as `undefined` and do not count toward
10
- * {@link size}.
8
+ * This does not support iteration. Sparse holes are skipped only implicitly by
9
+ * `get`/`has`, and high key values can create a large sparse backing array.
11
10
  *
12
11
  * @typeParam T - Value type stored in the map.
13
12
  */
@@ -41,21 +40,80 @@ export declare class ArrayMap<T> {
41
40
  * @param key - Non-negative integer key.
42
41
  */
43
42
  delete(key: number): void;
43
+ /** Remove all entries and reset {@link size} to zero. */
44
+ clear(): void;
45
+ }
46
+ /**
47
+ * An iterable `Map<number, T>` substitute backed by dense entries plus sparse indexes.
48
+ *
49
+ * Use this when callers need fast `forEach` or `values` over present entries.
50
+ * Random access resolves `key -> dense index` through {@link ArrayMap}, then
51
+ * indexes into `_items`; iteration walks the dense `_items` array directly.
52
+ *
53
+ * Deletes keep `_items` dense by moving the last value into the removed slot
54
+ * and updating the moved value's stored index.
55
+ *
56
+ * Compared with {@link ArrayMap}, this costs extra memory for tuple storage and
57
+ * an index map, and `delete`/new `set` do more bookkeeping. In return, iteration
58
+ * is dense and does not scan sparse holes.
59
+ *
60
+ * @typeParam T - Value type stored in the map.
61
+ */
62
+ export declare class IterableArrayMap<T> {
63
+ private readonly _indices;
64
+ private readonly _items;
65
+ /** The number of entries currently in the map. */
66
+ get size(): number;
67
+ /**
68
+ * Insert or replace the value at `key`.
69
+ *
70
+ * @param key - Non-negative integer key.
71
+ * @param value - Value to store.
72
+ */
73
+ set(key: number, value: T): void;
74
+ /**
75
+ * Retrieve the value stored at `key`, or `undefined` if no entry exists.
76
+ *
77
+ * @param key - Non-negative integer key.
78
+ */
79
+ get(key: number): T | undefined;
80
+ /**
81
+ * Return `true` when an entry exists at `key`.
82
+ *
83
+ * @param key - Non-negative integer key.
84
+ */
85
+ has(key: number): boolean;
86
+ /**
87
+ * Remove the entry at `key`. Does nothing if no entry exists there.
88
+ *
89
+ * @param key - Non-negative integer key.
90
+ */
91
+ delete(key: number): void;
44
92
  /**
45
- * Visit every present entry in ascending key order. Empty slots are skipped.
93
+ * Visit every present entry in dense item order.
46
94
  *
47
95
  * @param callback - Invoked with `(value, key, map)` for each entry.
48
96
  */
49
- forEach(callback: (value: T, key: number, map: ArrayMap<T>) => void): void;
50
- /** Return every present value in ascending key order. */
97
+ forEach(callback: (value: T, key: number, map: IterableArrayMap<T>) => void): void;
98
+ /**
99
+ * Return an iterator over `[key, value]` entries in dense item order.
100
+ *
101
+ * Entries are backed by the map's internal storage for speed. Treat them as
102
+ * immutable; mutating them through casts or plain JavaScript can corrupt the
103
+ * map's key index.
104
+ */
105
+ entries(): IterableIterator<readonly [number, T]>;
106
+ /** Return an iterator over `[key, value]` entries in dense item order. */
107
+ [Symbol.iterator](): IterableIterator<readonly [number, T]>;
108
+ /** Return every present value in dense item order. */
51
109
  values(): T[];
52
110
  /** Remove all entries and reset {@link size} to zero. */
53
111
  clear(): void;
54
112
  }
55
113
  /**
56
- * Read-only view of an {@link ArrayMap}: the mutating methods `set`, `delete`,
114
+ * Read-only view of an {@link IterableArrayMap}: the mutating methods `set`, `delete`,
57
115
  * and `clear` are omitted.
58
116
  *
59
117
  * @typeParam T - Value type stored in the map.
60
118
  */
61
- export type ReadonlyArrayMap<T> = Omit<ArrayMap<T>, "set" | "delete" | "clear">;
119
+ export type ReadonlyIterableArrayMap<T> = Omit<IterableArrayMap<T>, "set" | "delete" | "clear">;
@@ -1,13 +1,12 @@
1
1
  /**
2
- * A `Map<number, T>` substitute backed by a sparse JavaScript array.
2
+ * A cheap `Map<number, T>` substitute backed directly by a sparse JavaScript array.
3
3
  *
4
- * For small, dense, non-negative integer key spaces, indexing into a regular
5
- * array is faster than the hash-table lookups performed by the built-in
6
- * `Map`. `ArrayMap` is used inside the ECS to store per-entity component
7
- * instances and per-type metadata.
4
+ * Use this when callers only need random access (`get`, `set`, `has`, `delete`)
5
+ * by non-negative integer keys. Lookups are a single array read and memory usage
6
+ * is one sparse backing array, so it is cheaper than {@link IterableArrayMap}.
8
7
  *
9
- * Empty slots are represented as `undefined` and do not count toward
10
- * {@link size}.
8
+ * This does not support iteration. Sparse holes are skipped only implicitly by
9
+ * `get`/`has`, and high key values can create a large sparse backing array.
11
10
  *
12
11
  * @typeParam T - Value type stored in the map.
13
12
  */
@@ -61,36 +60,124 @@ export class ArrayMap {
61
60
  this._size--;
62
61
  }
63
62
  }
63
+ /** Remove all entries and reset {@link size} to zero. */
64
+ clear() {
65
+ this._backend.length = 0;
66
+ this._size = 0;
67
+ }
68
+ }
69
+ /**
70
+ * An iterable `Map<number, T>` substitute backed by dense entries plus sparse indexes.
71
+ *
72
+ * Use this when callers need fast `forEach` or `values` over present entries.
73
+ * Random access resolves `key -> dense index` through {@link ArrayMap}, then
74
+ * indexes into `_items`; iteration walks the dense `_items` array directly.
75
+ *
76
+ * Deletes keep `_items` dense by moving the last value into the removed slot
77
+ * and updating the moved value's stored index.
78
+ *
79
+ * Compared with {@link ArrayMap}, this costs extra memory for tuple storage and
80
+ * an index map, and `delete`/new `set` do more bookkeeping. In return, iteration
81
+ * is dense and does not scan sparse holes.
82
+ *
83
+ * @typeParam T - Value type stored in the map.
84
+ */
85
+ export class IterableArrayMap {
86
+ constructor() {
87
+ this._indices = new ArrayMap();
88
+ this._items = [];
89
+ }
90
+ /** The number of entries currently in the map. */
91
+ get size() {
92
+ return this._items.length;
93
+ }
94
+ /**
95
+ * Insert or replace the value at `key`.
96
+ *
97
+ * @param key - Non-negative integer key.
98
+ * @param value - Value to store.
99
+ */
100
+ set(key, value) {
101
+ const existingIndex = this._indices.get(key);
102
+ if (existingIndex !== undefined) {
103
+ this._items[existingIndex] = [key, value];
104
+ return;
105
+ }
106
+ const index = this._items.length;
107
+ this._indices.set(key, index);
108
+ this._items.push([key, value]);
109
+ }
110
+ /**
111
+ * Retrieve the value stored at `key`, or `undefined` if no entry exists.
112
+ *
113
+ * @param key - Non-negative integer key.
114
+ */
115
+ get(key) {
116
+ const index = this._indices.get(key);
117
+ return index === undefined ? undefined : this._items[index][1];
118
+ }
119
+ /**
120
+ * Return `true` when an entry exists at `key`.
121
+ *
122
+ * @param key - Non-negative integer key.
123
+ */
124
+ has(key) {
125
+ return this._indices.has(key);
126
+ }
127
+ /**
128
+ * Remove the entry at `key`. Does nothing if no entry exists there.
129
+ *
130
+ * @param key - Non-negative integer key.
131
+ */
132
+ delete(key) {
133
+ const index = this._indices.get(key);
134
+ if (index === undefined) {
135
+ return;
136
+ }
137
+ const lastIndex = this._items.length - 1;
138
+ if (index !== lastIndex) {
139
+ const lastItem = this._items[lastIndex];
140
+ this._items[index] = lastItem;
141
+ const lastKey = lastItem[0];
142
+ this._indices.set(lastKey, index);
143
+ }
144
+ this._items.pop();
145
+ this._indices.delete(key);
146
+ }
64
147
  /**
65
- * Visit every present entry in ascending key order. Empty slots are skipped.
148
+ * Visit every present entry in dense item order.
66
149
  *
67
150
  * @param callback - Invoked with `(value, key, map)` for each entry.
68
151
  */
69
152
  forEach(callback) {
70
- const backend = this._backend;
71
- for (let i = 0; i < backend.length; i++) {
72
- const value = backend[i];
73
- if (value !== undefined) {
74
- callback(value, i, this);
75
- }
153
+ const items = this._items;
154
+ for (let i = 0; i < items.length; i++) {
155
+ const [key, value] = items[i];
156
+ callback(value, key, this);
76
157
  }
77
158
  }
78
- /** Return every present value in ascending key order. */
159
+ /**
160
+ * Return an iterator over `[key, value]` entries in dense item order.
161
+ *
162
+ * Entries are backed by the map's internal storage for speed. Treat them as
163
+ * immutable; mutating them through casts or plain JavaScript can corrupt the
164
+ * map's key index.
165
+ */
166
+ entries() {
167
+ return this._items.values();
168
+ }
169
+ /** Return an iterator over `[key, value]` entries in dense item order. */
170
+ [Symbol.iterator]() {
171
+ return this.entries();
172
+ }
173
+ /** Return every present value in dense item order. */
79
174
  values() {
80
- const out = [];
81
- const backend = this._backend;
82
- for (let i = 0; i < backend.length; i++) {
83
- const value = backend[i];
84
- if (value !== undefined) {
85
- out.push(value);
86
- }
87
- }
88
- return out;
175
+ return this._items.map(([, value]) => value);
89
176
  }
90
177
  /** Remove all entries and reset {@link size} to zero. */
91
178
  clear() {
92
- this._backend.length = 0;
93
- this._size = 0;
179
+ this._indices.clear();
180
+ this._items.length = 0;
94
181
  }
95
182
  }
96
183
  //# sourceMappingURL=array_map.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"array_map.js","sourceRoot":"","sources":["../../src/util/array_map.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,MAAM,OAAO,QAAQ;IAArB;QACU,aAAQ,GAAsB,EAAE,CAAC;QACjC,UAAK,GAAW,CAAC,CAAC;IAqF5B,CAAC;IAnFC,kDAAkD;IAClD,IAAW,IAAI;QACb,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED;;;;;OAKG;IACI,GAAG,CAAC,GAAW,EAAE,KAAQ;QAC9B,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC9B,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE,CAAC;YAC/B,IAAI,CAAC,KAAK,EAAE,CAAC;QACf,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IACvB,CAAC;IAED;;;;OAIG;IACI,GAAG,CAAC,GAAW;QACpB,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IAC5B,CAAC;IAED;;;;OAIG;IACI,GAAG,CAAC,GAAW;QACpB,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,SAAS,CAAC;IAC1C,CAAC;IAED;;;;OAIG;IACI,MAAM,CAAC,GAAW;QACvB,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC9B,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE,CAAC;YAC/B,OAAO,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;YACzB,IAAI,CAAC,KAAK,EAAE,CAAC;QACf,CAAC;IACH,CAAC;IAED;;;;OAIG;IACI,OAAO,CAAC,QAA2D;QACxE,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC9B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACxC,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;YACzB,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBACxB,QAAQ,CAAC,KAAK,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;YAC3B,CAAC;QACH,CAAC;IACH,CAAC;IAED,yDAAyD;IAClD,MAAM;QACX,MAAM,GAAG,GAAQ,EAAE,CAAC;QACpB,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC9B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACxC,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;YACzB,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBACxB,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAClB,CAAC;QACH,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAED,yDAAyD;IAClD,KAAK;QACV,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;QACzB,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;IACjB,CAAC;CACF"}
1
+ {"version":3,"file":"array_map.js","sourceRoot":"","sources":["../../src/util/array_map.ts"],"names":[],"mappings":"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"}
@@ -199,23 +199,6 @@ export class Bitset {
199
199
  this.forEach((i) => idx.push(i));
200
200
  return idx;
201
201
  }
202
- /**
203
- * OR `bitmask` into the word at position `arrayIndex`.
204
- *
205
- * @internal Low-level bulk operation; prefer {@link add} or {@link addBit}
206
- * for single bits.
207
- */
208
- _addIndexBitmask(arrayIndex, bitmask) {
209
- this._bits[arrayIndex] |= bitmask;
210
- }
211
- /**
212
- * Replace the word at position `arrayIndex` with `bitmask`.
213
- *
214
- * @internal Used by network deserialization to write a whole word at once.
215
- */
216
- _setIndexBitmask(arrayIndex, bitmask) {
217
- this._bits[arrayIndex] = bitmask;
218
- }
219
202
  /**
220
203
  * Emit a JavaScript expression that evaluates to `true` when the bitset
221
204
  * addressed by `targetBitsExpr` (a `number[]` of 32-bit words) contains
@@ -1 +1 @@
1
- {"version":3,"file":"bitset.js","sourceRoot":"","sources":["../../src/util/bitset.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bitset.js","sourceRoot":"","sources":["../../src/util/bitset.ts"],"names":[],"mappings":"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"}
@@ -1,23 +1,53 @@
1
1
  /**
2
- * Strongly-typed wrapper around `eventemitter3`.
2
+ * Minimal, strongly-typed event emitter.
3
3
  *
4
- * The class declared in this file is purely a typings shim at module load
5
- * its prototype is swapped out for `EventEmitter` from `eventemitter3` so the
6
- * concrete behavior is provided by that library, while consumers see typed
7
- * `on` / `emit` / `off` signatures driven by an `EventMap`.
4
+ * Provides the small subset of the `EventEmitter` API vecs packages need
5
+ * `on` / `addListener`, `once`, `off` / `removeListener`,
6
+ * `removeAllListeners`, `emit`, `eventNames`, `listeners`, and
7
+ * `listenerCount` — with `on` / `emit` / `off` signatures driven by an
8
+ * `EventMap`.
8
9
  *
9
- * Inspired by the typings in `@yandeu/events`
10
- * (https://github.com/yandeu/events). The original typings turned out to be
11
- * usable directly on top of `eventemitter3`.
12
- *
13
- * @internal Used only inside the package, to expose typed entity-level events.
10
+ * Use this for package-level events that need typed `on` and `emit` calls
11
+ * without adding an external runtime dependency.
14
12
  */
15
13
  declare type ValidEventMap<T = any> = T extends {
16
14
  [P in keyof T]: (...args: any[]) => void;
17
15
  } ? T : never;
18
- declare type Handler<T extends any | ((...args: any[]) => R), R = any> = T;
19
16
  /** Listener signature inferred from an `EventMap` entry. */
20
- export declare type EventListener<T extends ValidEventMap, K extends EventNames<T>> = T extends string | symbol ? (...args: any[]) => void : K extends keyof T ? Handler<T[K], void> : never;
17
+ export declare type EventListener<T extends ValidEventMap, K extends EventNames<T>> = K extends keyof T ? T[K] extends (...args: any[]) => void ? T[K] : never : (...args: any[]) => void;
18
+ declare type EventArgs<T extends ValidEventMap, K extends EventNames<T>> = Parameters<EventListener<T, K>>;
21
19
  /** Names of the events declared on an `EventMap`. */
22
20
  export declare type EventNames<T extends ValidEventMap> = T extends string | symbol ? T : keyof T;
21
+ /**
22
+ * Typed `EventEmitter` parameterised by an `EventMap` of `eventName -> handler`.
23
+ *
24
+ * Use for package-level events that need typed event names and payloads.
25
+ */
26
+ export declare class Events<EventMap extends ValidEventMap = any> {
27
+ private _listeners;
28
+ /** Alias of {@link on}. */
29
+ addListener<T extends EventNames<EventMap>>(event: T, fn: EventListener<EventMap, T>, context?: any): this;
30
+ /** Calls every listener registered for `event` with `args`, returning whether any listener ran. */
31
+ emit<T extends EventNames<EventMap>>(event: T, ...args: EventArgs<EventMap, T>): boolean;
32
+ /** Names of the events with at least one registered listener. */
33
+ eventNames(): EventNames<EventMap>[];
34
+ /** Number of listeners registered for `event`. */
35
+ listenerCount(event: EventNames<EventMap>): number;
36
+ /** Listener functions registered for `event`. */
37
+ listeners(event: EventNames<EventMap>): ((...args: any[]) => void)[];
38
+ /** Removes a listener registered for `event`, or every listener for `event` when `fn` is omitted. */
39
+ off<T extends EventNames<EventMap>>(event: T, fn?: EventListener<EventMap, T>, context?: any): this;
40
+ /** Registers `fn` to be called every time `event` is emitted. */
41
+ on<T extends EventNames<EventMap>>(event: T, fn: EventListener<EventMap, T>, context?: any): this;
42
+ /** Registers `fn` to be called the next time `event` is emitted, then removes it. */
43
+ once<T extends EventNames<EventMap>>(event: T, fn: EventListener<EventMap, T>, context?: any): this;
44
+ /** Removes all listeners, or all listeners for `event` when given. */
45
+ removeAllListeners(event?: EventNames<EventMap>): this;
46
+ /** Alias of {@link off}. */
47
+ removeListener<T extends EventNames<EventMap>>(event: T, fn?: EventListener<EventMap, T>, context?: any): this;
48
+ /** Registers a listener, storing both the callable (`fn`) and the function used for `off` matching (`original`). */
49
+ private _add;
50
+ /** Whether `registration` was registered with `fn` (directly or as a `once` original) and, if given, `context`. */
51
+ private _matches;
52
+ }
23
53
  export {};
@@ -1,64 +1,115 @@
1
1
  /**
2
- * Strongly-typed wrapper around `eventemitter3`.
2
+ * Minimal, strongly-typed event emitter.
3
3
  *
4
- * The class declared in this file is purely a typings shim at module load
5
- * its prototype is swapped out for `EventEmitter` from `eventemitter3` so the
6
- * concrete behavior is provided by that library, while consumers see typed
7
- * `on` / `emit` / `off` signatures driven by an `EventMap`.
4
+ * Provides the small subset of the `EventEmitter` API vecs packages need
5
+ * `on` / `addListener`, `once`, `off` / `removeListener`,
6
+ * `removeAllListeners`, `emit`, `eventNames`, `listeners`, and
7
+ * `listenerCount` — with `on` / `emit` / `off` signatures driven by an
8
+ * `EventMap`.
8
9
  *
9
- * Inspired by the typings in `@yandeu/events`
10
- * (https://github.com/yandeu/events). The original typings turned out to be
11
- * usable directly on top of `eventemitter3`.
12
- *
13
- * @internal Used only inside the package, to expose typed entity-level events.
10
+ * Use this for package-level events that need typed `on` and `emit` calls
11
+ * without adding an external runtime dependency.
14
12
  */
15
- import eventEmitter3 from "eventemitter3";
16
- const { EventEmitter } = eventEmitter3;
17
13
  /**
18
- * Typed event emitter shape. Replaced at runtime by `EventEmitter` from
19
- * `eventemitter3` (see the assignment below the class body).
14
+ * Typed `EventEmitter` parameterised by an `EventMap` of `eventName -> handler`.
15
+ *
16
+ * Use for package-level events that need typed event names and payloads.
20
17
  */
21
- class events {
22
- on(event, fn, context) {
23
- return 0;
18
+ export class Events {
19
+ constructor() {
20
+ this._listeners = new Map();
24
21
  }
25
- emit(event, ...args) {
26
- return 0;
22
+ /** Alias of {@link on}. */
23
+ addListener(event, fn, context) {
24
+ return this.on(event, fn, context);
27
25
  }
28
- once(event, fn, context) {
29
- return 0;
26
+ /** Calls every listener registered for `event` with `args`, returning whether any listener ran. */
27
+ emit(event, ...args) {
28
+ const registrations = this._listeners.get(event);
29
+ if (!registrations || registrations.length === 0) {
30
+ return false;
31
+ }
32
+ for (const { fn, context } of registrations.slice()) {
33
+ fn.apply(context, args);
34
+ }
35
+ return true;
30
36
  }
37
+ /** Names of the events with at least one registered listener. */
31
38
  eventNames() {
32
- return 0;
39
+ return [...this._listeners.keys()];
33
40
  }
41
+ /** Number of listeners registered for `event`. */
42
+ listenerCount(event) {
43
+ return this._listeners.get(event)?.length ?? 0;
44
+ }
45
+ /** Listener functions registered for `event`. */
34
46
  listeners(event) {
35
- return 0;
47
+ return (this._listeners.get(event) ?? []).map((r) => r.fn);
36
48
  }
37
- listenerCount(event) {
38
- return 0;
49
+ /** Removes a listener registered for `event`, or every listener for `event` when `fn` is omitted. */
50
+ off(event, fn, context) {
51
+ return this.removeListener(event, fn, context);
39
52
  }
40
- removeListener(event, fn, context, once) {
41
- return 0;
53
+ /** Registers `fn` to be called every time `event` is emitted. */
54
+ on(event, fn, context) {
55
+ return this._add(event, fn, fn, context);
56
+ }
57
+ /** Registers `fn` to be called the next time `event` is emitted, then removes it. */
58
+ once(event, fn, context) {
59
+ const original = fn;
60
+ const wrapper = (...args) => {
61
+ this.removeListener(event, wrapper);
62
+ original.apply(context, args);
63
+ };
64
+ return this._add(event, wrapper, original, context);
42
65
  }
66
+ /** Removes all listeners, or all listeners for `event` when given. */
43
67
  removeAllListeners(event) {
44
- return 0;
68
+ if (event === undefined) {
69
+ this._listeners.clear();
70
+ }
71
+ else {
72
+ this._listeners.delete(event);
73
+ }
74
+ return this;
45
75
  }
46
- off(event, fn, context, once) {
47
- return 0;
76
+ /** Alias of {@link off}. */
77
+ removeListener(event, fn, context) {
78
+ if (fn === undefined) {
79
+ this._listeners.delete(event);
80
+ return this;
81
+ }
82
+ const registrations = this._listeners.get(event);
83
+ if (!registrations) {
84
+ return this;
85
+ }
86
+ const remaining = registrations.filter((r) => !this._matches(r, fn, context));
87
+ if (remaining.length === 0) {
88
+ this._listeners.delete(event);
89
+ }
90
+ else {
91
+ this._listeners.set(event, remaining);
92
+ }
93
+ return this;
48
94
  }
49
- addListener(event, fn, context) {
50
- return 0;
95
+ /** Registers a listener, storing both the callable (`fn`) and the function used for `off` matching (`original`). */
96
+ _add(event, fn, original, context) {
97
+ const registrations = this._listeners.get(event);
98
+ const registration = { fn, original, context };
99
+ if (registrations) {
100
+ registrations.push(registration);
101
+ }
102
+ else {
103
+ this._listeners.set(event, [registration]);
104
+ }
105
+ return this;
106
+ }
107
+ /** Whether `registration` was registered with `fn` (directly or as a `once` original) and, if given, `context`. */
108
+ _matches(registration, fn, context) {
109
+ if (registration.original !== fn && registration.fn !== fn) {
110
+ return false;
111
+ }
112
+ return context === undefined || registration.context === context;
51
113
  }
52
- }
53
- events = EventEmitter;
54
- /**
55
- * Typed `EventEmitter` parameterised by an `EventMap` of `eventName -> handler`.
56
- *
57
- * Constructed lazily by `Entity.events`. Inherits its concrete behavior from
58
- * `eventemitter3`'s `EventEmitter`.
59
- *
60
- * @internal
61
- */
62
- export class Events extends events {
63
114
  }
64
115
  //# sourceMappingURL=events.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"events.js","sourceRoot":"","sources":["../../src/util/events.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,aAAa,MAAM,eAAe,CAAC;AAC1C,MAAM,EAAE,YAAY,EAAE,GAAG,aAAa,CAAC;AA0BvC;;;GAGG;AACH,MAAM,MAAM;IACH,EAAE,CACP,KAAQ,EACR,EAA8B,EAC9B,OAAa;QAEb,OAAO,CAAQ,CAAC;IAClB,CAAC;IACM,IAAI,CAAiC,KAAQ,EAAE,GAAG,IAA4B;QACnF,OAAO,CAAQ,CAAC;IAClB,CAAC;IACM,IAAI,CACT,KAAQ,EACR,EAA8B,EAC9B,OAAa;QAEb,OAAO,CAAQ,CAAC;IAClB,CAAC;IACM,UAAU;QACf,OAAO,CAAQ,CAAC;IAClB,CAAC;IACM,SAAS,CAAC,KAA2B;QAC1C,OAAO,CAAQ,CAAC;IAClB,CAAC;IACM,aAAa,CAAC,KAA2B;QAC9C,OAAO,CAAQ,CAAC;IAClB,CAAC;IACM,cAAc,CACnB,KAAQ,EACR,EAA+B,EAC/B,OAAa,EACb,IAAc;QAEd,OAAO,CAAQ,CAAC;IAClB,CAAC;IACM,kBAAkB,CAAC,KAA4B;QACpD,OAAO,CAAQ,CAAC;IAClB,CAAC;IACM,GAAG,CACR,KAAQ,EACR,EAA2C,EAC3C,OAAa,EACb,IAA0B;QAE1B,OAAO,CAAQ,CAAC;IAClB,CAAC;IACM,WAAW,CAChB,KAAQ,EACR,EAA8B,EAC9B,OAAa;QAEb,OAAO,CAAQ,CAAC;IAClB,CAAC;CACF;AAEA,MAAc,GAAG,YAAY,CAAC;AAE/B;;;;;;;GAOG;AACH,MAAM,OAAO,MAA6C,SAAQ,MAAgB;CAAG"}
1
+ {"version":3,"file":"events.js","sourceRoot":"","sources":["../../src/util/events.ts"],"names":[],"mappings":"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"}