@rbxts/replecs 0.2.3 → 0.3.0-test1

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.
@@ -1,229 +1,257 @@
1
- import type { Entity, Id, Pair, Tag, World } from "@rbxts/jecs";
2
-
3
- declare namespace Replecs {
4
- export type SerdesTable =
5
- | {
6
- bytespan?: number;
7
- includes_variants?: false;
8
- serialize: (value: any) => buffer;
9
- deserialize: (buffer: buffer) => any;
10
- }
11
- | {
12
- bytespan?: number;
13
- includes_variants: true;
14
- serialize: (value: any) => LuaTuple<[buffer, defined[] | undefined]>;
15
- deserialize: (buffer: buffer, blobs: defined[] | undefined) => any;
16
- };
17
-
18
- type MemberFilterMap = Map<Player, boolean>;
19
- type MemberFilter = Player | MemberFilterMap | undefined;
20
- type Member = unknown;
21
-
22
- export interface SharedInfo<T> {
23
- lookup: Record<string, T>;
24
- keys: string[];
25
- indexes: [T];
26
- members: Map<T, number>;
27
- }
28
- export interface HandleContext {
29
- entity_id: number;
30
- component: <T>(component: Entity<T>) => T;
31
- target: (relation: Id, index?: number) => Entity | undefined;
32
- pair_value: <T>(relation: Id<T>, target: Entity) => T | undefined;
33
- has_pair: (relation: Id, target: Entity) => boolean;
34
-
35
- entity: (server_entity: number) => Entity | undefined;
36
- has: (tag: Entity) => boolean;
37
- }
38
- export interface CustomId {
39
- identifier: string;
40
- handle_callback: (ctx: HandleContext) => Entity;
41
- handle(handler: (ctx: HandleContext) => Entity): void;
42
- }
43
-
44
- export interface Shared {
45
- components: SharedInfo<Entity>;
46
- custom_ids: SharedInfo<CustomId>;
47
- }
48
- interface HandshakeSerdesInfo {
49
- includes_variants?: boolean;
50
- bytespan?: number;
51
- }
52
-
53
- export interface HandshakeInfo {
54
- components: Record<string, boolean>;
55
- custom_ids: Record<string, boolean>;
56
- serdes: Record<string, HandshakeSerdesInfo>;
57
- }
58
-
59
- export interface Components {
60
- shared: Tag;
61
- networked: Entity<MemberFilter>;
62
- reliable: Entity<MemberFilter>;
63
- unreliable: Entity<MemberFilter>;
64
- pair: Entity<MemberFilter>;
65
-
66
- serdes: Entity<SerdesTable>;
67
- custom: Entity;
68
- custom_handler: Entity<(value: any) => Entity>;
69
- global: Entity<number>;
70
-
71
- Shared: Tag;
72
- Networked: Entity<MemberFilter>;
73
- Reliable: Entity<MemberFilter>;
74
- Unreliable: Entity<MemberFilter>;
75
- Pair: Entity<MemberFilter>;
76
-
77
- Serdes: Entity<SerdesTable>;
78
- Custom: Entity;
79
- CustomHandler: Entity<(value: any) => Entity>;
80
- Global: Entity<number>;
81
- }
82
-
83
- export interface Client {
84
- world: World;
85
- inited?: boolean;
86
-
87
- is_relicating: boolean;
88
- after_relication_callbacks: [() => void];
89
-
90
- components: Components;
91
-
92
- init(world?: World): void;
93
- destroy(): void;
94
-
95
- handle_global(handler: (id: number) => Entity): void;
96
-
97
- get_server_entity(client_entity: Entity): number | undefined;
98
- get_client_entity(server_entity: number): Entity | undefined;
99
-
100
- register_entity(entity: Entity, server_entity: number): void;
101
- unregister_entity(entity: Entity): void;
102
-
103
- after_replication(callback: () => void): void;
104
- added(callback: (entity: Entity) => void): () => void;
105
-
106
- hook<T>(
107
- action: "changed",
108
- relation: Pair<MemberFilter, T>,
109
- callback: (entity: Entity, id: Id<T>, value: T) => void
110
- ): () => void;
111
- hook<T>(
112
- action: "removed",
113
- relation: Pair<MemberFilter, T>,
114
- callback: (entity: Entity, id: Id<T>) => void
115
- ): () => void;
116
- hook(
117
- action: "deleted",
118
- entity: Entity,
119
- callback: (entity: Entity) => void
120
- ): () => void;
121
-
122
- override<T>(
123
- action: "changed",
124
- relation: Pair<MemberFilter, T>,
125
- callback: (entity: Entity, id: Id<T>, value: any) => void
126
- ): () => void;
127
- override<T>(
128
- action: "removed",
129
- relation: Pair<MemberFilter, T>,
130
- callback: (entity: Entity, id: Id<T>) => void
131
- ): () => void;
132
- override(
133
- action: "deleted",
134
- entity: Entity,
135
- callback: (entity: Entity) => void
136
- ): () => void;
137
-
138
- encode_component(component: Entity): number;
139
- decode_component(encoded: number): Entity;
140
- register_custom_id(custom_id: CustomId): void;
141
-
142
- apply_updates(buf: buffer, all_variants?: unknown[][]): void;
143
- apply_unreliable(buf: buffer, all_variants?: unknown[][]): void;
144
- apply_full(buf: buffer, all_variants?: unknown[][]): void;
145
-
146
- generate_handshake(): HandshakeInfo;
147
- verify_handshake(
148
- handshake: HandshakeInfo
149
- ): LuaTuple<[true]> | LuaTuple<[false, string]>;
150
- }
151
-
152
- export interface ServerImp {
153
- set_networked(entity: Entity, filter?: MemberFilter): void;
154
- stop_networked(entity: Entity): void;
155
-
156
- set_reliable(
157
- entity: Entity,
158
- component: Entity,
159
- filter?: MemberFilter
160
- ): void;
161
- set_unreliable(
162
- entity: Entity,
163
- component: Entity,
164
- filter?: MemberFilter
165
- ): void;
166
- set_pair(entity: Entity, relation: Entity, filter?: MemberFilter): void;
167
- set_custom(entity: Entity, handler: Entity | CustomId): void;
168
-
169
- stop_reliable(entity: Entity, component: Entity): void;
170
- stop_unreliable(entity: Entity, component: Entity): void;
171
- stop_pair(entity: Entity, relation: Entity): void;
172
- remove_custom(entity: Entity): void;
173
- }
174
-
175
- export interface Server extends ServerImp {
176
- world: World;
177
- inited?: boolean;
178
-
179
- init(world?: World): void;
180
- destroy(): void;
181
-
182
- encode_component(component: Entity): number;
183
- decode_component(encoded: number): Entity;
184
- register_custom_id(custom_id: CustomId): void;
185
-
186
- get_full(player: Player): LuaTuple<[buffer, unknown[][]]>;
187
- collect_updates(): IterableFunction<
188
- LuaTuple<[Player, buffer, unknown[][]]>
189
- >;
190
- collect_unreliable(): IterableFunction<
191
- LuaTuple<[Player, buffer, unknown[][]]>
192
- >;
193
-
194
- mark_player_ready(player: Player): void;
195
- is_player_ready(player: Player): boolean;
196
-
197
- add_player_alias(client: Player, alias: defined): void;
198
- remove_player_alias(alias: defined): void;
199
-
200
- generate_handshake(): HandshakeInfo;
201
- verify_handshake(
202
- handshake: HandshakeInfo
203
- ): LuaTuple<[true]> | LuaTuple<[false, string]>;
204
- }
205
-
206
- export interface ReplecsLib {
207
- client: Client;
208
- server: Server;
209
-
210
- after_replication(callback: () => void): void;
211
- register_custom_id(custom_id: CustomId): void;
212
- }
213
-
214
- export interface Replecs extends Components {
215
- VERSION: string;
216
-
217
- create: (world?: World) => ReplecsLib;
218
- create_server: (world?: World) => Server;
219
- create_client: (world?: World) => Client;
220
- create_custom_id: (
221
- identifier: string,
222
- handler?: (ctx: HandleContext) => Entity
223
- ) => CustomId;
224
- }
225
- }
226
-
227
- declare const Replecs: Replecs.Replecs;
228
-
229
- export = Replecs;
1
+ import type { Entity, Id, InferComponent, Pair, Tag, World } from "@rbxts/jecs";
2
+
3
+ declare namespace Replecs {
4
+ export type SerdesTable<T = any> =
5
+ | {
6
+ bytespan?: number;
7
+ includes_variants?: false;
8
+ serialize: (value: T) => buffer;
9
+ deserialize: (buffer: buffer) => T;
10
+ }
11
+ | {
12
+ bytespan?: number;
13
+ includes_variants: true;
14
+ serialize: (value: T) => LuaTuple<[buffer, defined[] | undefined]>;
15
+ deserialize: (buffer: buffer, blobs: defined[] | undefined) => T;
16
+ };
17
+
18
+ type MemberFilterMap = Map<Player, boolean>;
19
+ type MemberFilter = Player | MemberFilterMap | undefined;
20
+ type Member = unknown;
21
+
22
+ export interface SharedInfo<T> {
23
+ lookup: Record<string, T>;
24
+ keys: string[];
25
+ indexes: [T];
26
+ members: Map<T, number>;
27
+ }
28
+ export interface HandleContext {
29
+ entity_id: number;
30
+ component: <T>(component: Entity<T>) => T;
31
+ target: (relation: Id, index?: number) => Entity | undefined;
32
+ pair_value: <T>(relation: Id<T>, target: Entity) => T | undefined;
33
+ has_pair: (relation: Id, target: Entity) => boolean;
34
+
35
+ entity: (server_entity: number) => Entity | undefined;
36
+ has: (tag: Entity) => boolean;
37
+ }
38
+ export interface CustomId {
39
+ identifier: string;
40
+ handle_callback: (ctx: HandleContext) => Entity;
41
+ handle(handler: (ctx: HandleContext) => Entity): void;
42
+ }
43
+
44
+ export interface Shared {
45
+ components: SharedInfo<Entity>;
46
+ custom_ids: SharedInfo<CustomId>;
47
+ }
48
+ interface HandshakeSerdesInfo {
49
+ includes_variants?: boolean;
50
+ bytespan?: number;
51
+ }
52
+
53
+ export interface HandshakeInfo {
54
+ components: Record<string, boolean>;
55
+ custom_ids: Record<string, boolean>;
56
+ serdes: Record<string, HandshakeSerdesInfo>;
57
+ }
58
+
59
+ export interface Components {
60
+ shared: Tag;
61
+ networked: Entity<MemberFilter>;
62
+ reliable: Entity<MemberFilter>;
63
+ unreliable: Entity<MemberFilter>;
64
+ relation: Entity<MemberFilter>;
65
+
66
+ serdes: Entity<SerdesTable>;
67
+ custom: Entity;
68
+ custom_handler: Entity<(value: any) => Entity>;
69
+ global: Entity<number>;
70
+
71
+ Shared: Tag;
72
+ Networked: Entity<MemberFilter>;
73
+ Reliable: Entity<MemberFilter>;
74
+ Unreliable: Entity<MemberFilter>;
75
+ Relation: Entity<MemberFilter>;
76
+
77
+ Serdes: Entity<SerdesTable>;
78
+ Custom: Entity;
79
+ CustomHandler: Entity<(value: any) => Entity>;
80
+ Global: Entity<number>;
81
+ }
82
+
83
+ export interface ClientImp {
84
+ set_serdes<T extends Id>(
85
+ component: InferComponent<T>,
86
+ serdes: SerdesTable<T>,
87
+ ): void;
88
+ remove_serdes(component: Id): void;
89
+ }
90
+
91
+ export interface Client {
92
+ world: World;
93
+ inited?: boolean;
94
+
95
+ is_relicating: boolean;
96
+ after_relication_callbacks: [() => void];
97
+
98
+ components: Components;
99
+
100
+ init(world?: World): void;
101
+ destroy(): void;
102
+ handle_global(handler: (id: number) => Entity): void;
103
+ get_server_entity(client_entity: Entity): number | undefined;
104
+ get_client_entity(server_entity: number): Entity | undefined;
105
+
106
+ register_entity(entity: Entity, server_entity: number): void;
107
+ unregister_entity(entity: Entity): void;
108
+
109
+ after_replication(callback: () => void): void;
110
+ added(callback: (entity: Entity) => void): () => void;
111
+
112
+ hook<T>(
113
+ action: "changed",
114
+ relation: Pair<MemberFilter, T>,
115
+ callback: (entity: Entity, id: Id<T>, value: T) => void,
116
+ ): () => void;
117
+ hook<T>(
118
+ action: "removed",
119
+ relation: Pair<MemberFilter, T>,
120
+ callback: (entity: Entity, id: Id<T>) => void,
121
+ ): () => void;
122
+ hook(
123
+ action: "deleted",
124
+ entity: Entity,
125
+ callback: (entity: Entity) => void,
126
+ ): () => void;
127
+
128
+ override<T>(
129
+ action: "changed",
130
+ relation: Pair<MemberFilter, T>,
131
+ callback: (entity: Entity, id: Id<T>, value: any) => void,
132
+ ): () => void;
133
+ override<T>(
134
+ action: "removed",
135
+ relation: Pair<MemberFilter, T>,
136
+ callback: (entity: Entity, id: Id<T>) => void,
137
+ ): () => void;
138
+ override(
139
+ action: "deleted",
140
+ entity: Entity,
141
+ callback: (entity: Entity) => void,
142
+ ): () => void;
143
+
144
+ encode_component(component: Entity): number;
145
+ decode_component(encoded: number): Entity;
146
+ get_shared_count(): number;
147
+
148
+ register_custom_id(custom_id: CustomId): void;
149
+
150
+ apply_updates(buf: buffer, all_variants?: defined[][]): void;
151
+ apply_unreliable(buf: buffer, all_variants?: defined[][]): void;
152
+ apply_full(buf: buffer, all_variants?: defined[][]): void;
153
+ apply_entity(buf: buffer, all_variants?: defined[][]): void;
154
+
155
+ generate_handshake(): HandshakeInfo;
156
+ verify_handshake(
157
+ handshake: HandshakeInfo,
158
+ ): LuaTuple<[true]> | LuaTuple<[false, string]>;
159
+ }
160
+
161
+ export interface ServerImp {
162
+ set_networked(entity: Entity, filter?: MemberFilter): void;
163
+ set_reliable(
164
+ entity: Entity,
165
+ component: Entity,
166
+ filter?: MemberFilter,
167
+ ): void;
168
+ set_unreliable(
169
+ entity: Entity,
170
+ component: Entity,
171
+ filter?: MemberFilter,
172
+ ): void;
173
+ set_pair(entity: Entity, id: Pair, filter?: MemberFilter): void;
174
+ set_relation(entity: Entity, relation: Entity, filter?: MemberFilter): void;
175
+
176
+ stop_networked(entity: Entity, keep?: boolean): void;
177
+ stop_reliable(entity: Entity, component: Entity, keep?: boolean): void;
178
+ stop_unreliable(entity: Entity, component: Entity, keep?: boolean): void;
179
+ stop_pair(entity: Entity, id: Pair): void;
180
+ stop_relation(entity: Entity, relation: Entity, keep?: boolean): void;
181
+
182
+ set_custom(entity: Entity, handler: Entity | CustomId): void;
183
+ remove_custom(entity: Entity): void;
184
+
185
+ set_serdes<T extends Id>(
186
+ component: InferComponent<T>,
187
+ serdes: SerdesTable<T>,
188
+ ): void;
189
+ remove_serdes(component: Id): void;
190
+ }
191
+
192
+ export interface Server extends ServerImp {
193
+ world: World;
194
+ inited?: boolean;
195
+
196
+ init(world?: World): void;
197
+ destroy(): void;
198
+
199
+ encode_component(component: Entity): number;
200
+ decode_component(encoded: number): Entity | undefined;
201
+ get_shared_count(): number;
202
+
203
+ register_custom_id(custom_id: CustomId): void;
204
+
205
+ get_full(player: Player): LuaTuple<[buffer, defined[][] | undefined]>;
206
+ collect_entity(
207
+ entity: Entity,
208
+ ): IterableFunction<LuaTuple<[Player, buffer, defined[][] | undefined]>>;
209
+ collect_updates(): IterableFunction<
210
+ LuaTuple<[Player, buffer, defined[][] | undefined]>
211
+ >;
212
+ collect_unreliable(): IterableFunction<
213
+ LuaTuple<[Player, buffer, defined[][] | undefined]>
214
+ >;
215
+
216
+ mark_player_ready(player: Player): void;
217
+ is_player_ready(player: Player): boolean;
218
+
219
+ add_player_alias(client: Player, alias: defined): void;
220
+ remove_player_alias(alias: defined): void;
221
+
222
+ generate_handshake(): HandshakeInfo;
223
+ verify_handshake(
224
+ handshake: HandshakeInfo,
225
+ ): LuaTuple<[true]> | LuaTuple<[false, string]>;
226
+ }
227
+
228
+ export interface ReplecsLib {
229
+ client: Client;
230
+ server: Server;
231
+
232
+ after_replication(callback: () => void): void;
233
+ register_custom_id(custom_id: CustomId): void;
234
+
235
+ set_serdes<T extends Id>(
236
+ component: InferComponent<T>,
237
+ serdes: SerdesTable<T>,
238
+ ): void;
239
+ remove_serdes(component: Id): void;
240
+ }
241
+
242
+ export interface Replecs extends Components {
243
+ VERSION: string;
244
+
245
+ create: (world?: World) => ReplecsLib;
246
+ create_server: (world?: World) => Server;
247
+ create_client: (world?: World) => Client;
248
+ create_custom_id: (
249
+ identifier: string,
250
+ handler?: (ctx: HandleContext) => Entity,
251
+ ) => CustomId;
252
+ }
253
+ }
254
+
255
+ declare const Replecs: Replecs.Replecs;
256
+
257
+ export = Replecs;