@esengine/server 1.1.4 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/Room-BnKpl5Sj.d.ts +237 -0
- package/dist/auth/index.d.ts +711 -0
- package/dist/auth/index.js +707 -0
- package/dist/auth/index.js.map +1 -0
- package/dist/auth/testing/index.d.ts +153 -0
- package/dist/auth/testing/index.js +165 -0
- package/dist/auth/testing/index.js.map +1 -0
- package/dist/chunk-7C6JZO4O.js +744 -0
- package/dist/chunk-7C6JZO4O.js.map +1 -0
- package/dist/chunk-T626JPC7.js +8 -0
- package/dist/chunk-T626JPC7.js.map +1 -0
- package/dist/index-DgaJIm6-.d.ts +170 -0
- package/dist/index.d.ts +4 -403
- package/dist/index.js +3 -745
- package/dist/index.js.map +1 -1
- package/dist/ratelimit/index.d.ts +787 -0
- package/dist/ratelimit/index.js +818 -0
- package/dist/ratelimit/index.js.map +1 -0
- package/dist/testing/index.d.ts +386 -0
- package/dist/testing/index.js +629 -0
- package/dist/testing/index.js.map +1 -0
- package/dist/types-BmO5ykKp.d.ts +311 -0
- package/package.json +30 -3
package/dist/index.d.ts
CHANGED
|
@@ -1,173 +1,8 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { S as ServerConfig, G as GameServer, A as ApiDefinition, M as MsgDefinition } from './index-DgaJIm6-.js';
|
|
2
|
+
export { b as ApiContext, c as MsgContext, a as ServerConnection } from './index-DgaJIm6-.js';
|
|
3
|
+
export { I as IPlayer, P as Player, R as Room, a as RoomOptions } from './Room-BnKpl5Sj.js';
|
|
2
4
|
export { ErrorCode, RpcError } from '@esengine/rpc';
|
|
3
5
|
|
|
4
|
-
/**
|
|
5
|
-
* @zh ESEngine Server 类型定义
|
|
6
|
-
* @en ESEngine Server type definitions
|
|
7
|
-
*/
|
|
8
|
-
|
|
9
|
-
/**
|
|
10
|
-
* @zh 服务器配置
|
|
11
|
-
* @en Server configuration
|
|
12
|
-
*/
|
|
13
|
-
interface ServerConfig {
|
|
14
|
-
/**
|
|
15
|
-
* @zh 监听端口
|
|
16
|
-
* @en Listen port
|
|
17
|
-
* @default 3000
|
|
18
|
-
*/
|
|
19
|
-
port?: number;
|
|
20
|
-
/**
|
|
21
|
-
* @zh API 目录路径
|
|
22
|
-
* @en API directory path
|
|
23
|
-
* @default 'src/api'
|
|
24
|
-
*/
|
|
25
|
-
apiDir?: string;
|
|
26
|
-
/**
|
|
27
|
-
* @zh 消息处理器目录路径
|
|
28
|
-
* @en Message handlers directory path
|
|
29
|
-
* @default 'src/msg'
|
|
30
|
-
*/
|
|
31
|
-
msgDir?: string;
|
|
32
|
-
/**
|
|
33
|
-
* @zh 游戏 Tick 速率 (每秒)
|
|
34
|
-
* @en Game tick rate (per second)
|
|
35
|
-
* @default 20
|
|
36
|
-
*/
|
|
37
|
-
tickRate?: number;
|
|
38
|
-
/**
|
|
39
|
-
* @zh 服务器启动回调
|
|
40
|
-
* @en Server start callback
|
|
41
|
-
*/
|
|
42
|
-
onStart?: (port: number) => void;
|
|
43
|
-
/**
|
|
44
|
-
* @zh 连接建立回调
|
|
45
|
-
* @en Connection established callback
|
|
46
|
-
*/
|
|
47
|
-
onConnect?: (conn: ServerConnection) => void | Promise<void>;
|
|
48
|
-
/**
|
|
49
|
-
* @zh 连接断开回调
|
|
50
|
-
* @en Connection closed callback
|
|
51
|
-
*/
|
|
52
|
-
onDisconnect?: (conn: ServerConnection) => void | Promise<void>;
|
|
53
|
-
}
|
|
54
|
-
/**
|
|
55
|
-
* @zh 服务器连接(扩展 RPC Connection)
|
|
56
|
-
* @en Server connection (extends RPC Connection)
|
|
57
|
-
*/
|
|
58
|
-
interface ServerConnection<TData = Record<string, unknown>> extends Connection<TData> {
|
|
59
|
-
/**
|
|
60
|
-
* @zh 连接唯一标识(继承自 Connection)
|
|
61
|
-
* @en Connection unique identifier (inherited from Connection)
|
|
62
|
-
*/
|
|
63
|
-
readonly id: string;
|
|
64
|
-
/**
|
|
65
|
-
* @zh 用户自定义数据
|
|
66
|
-
* @en User-defined data
|
|
67
|
-
*/
|
|
68
|
-
data: TData;
|
|
69
|
-
}
|
|
70
|
-
/**
|
|
71
|
-
* @zh API 处理器上下文
|
|
72
|
-
* @en API handler context
|
|
73
|
-
*/
|
|
74
|
-
interface ApiContext<TData = Record<string, unknown>> {
|
|
75
|
-
/**
|
|
76
|
-
* @zh 当前连接
|
|
77
|
-
* @en Current connection
|
|
78
|
-
*/
|
|
79
|
-
conn: ServerConnection<TData>;
|
|
80
|
-
/**
|
|
81
|
-
* @zh 服务器实例
|
|
82
|
-
* @en Server instance
|
|
83
|
-
*/
|
|
84
|
-
server: GameServer;
|
|
85
|
-
}
|
|
86
|
-
/**
|
|
87
|
-
* @zh API 定义选项
|
|
88
|
-
* @en API definition options
|
|
89
|
-
*/
|
|
90
|
-
interface ApiDefinition<TReq = unknown, TRes = unknown, TData = Record<string, unknown>> {
|
|
91
|
-
/**
|
|
92
|
-
* @zh API 处理函数
|
|
93
|
-
* @en API handler function
|
|
94
|
-
*/
|
|
95
|
-
handler: (req: TReq, ctx: ApiContext<TData>) => TRes | Promise<TRes>;
|
|
96
|
-
/**
|
|
97
|
-
* @zh 请求验证函数(可选)
|
|
98
|
-
* @en Request validation function (optional)
|
|
99
|
-
*/
|
|
100
|
-
validate?: (req: unknown) => req is TReq;
|
|
101
|
-
}
|
|
102
|
-
/**
|
|
103
|
-
* @zh 消息处理器上下文
|
|
104
|
-
* @en Message handler context
|
|
105
|
-
*/
|
|
106
|
-
interface MsgContext<TData = Record<string, unknown>> {
|
|
107
|
-
/**
|
|
108
|
-
* @zh 当前连接
|
|
109
|
-
* @en Current connection
|
|
110
|
-
*/
|
|
111
|
-
conn: ServerConnection<TData>;
|
|
112
|
-
/**
|
|
113
|
-
* @zh 服务器实例
|
|
114
|
-
* @en Server instance
|
|
115
|
-
*/
|
|
116
|
-
server: GameServer;
|
|
117
|
-
}
|
|
118
|
-
/**
|
|
119
|
-
* @zh 消息定义选项
|
|
120
|
-
* @en Message definition options
|
|
121
|
-
*/
|
|
122
|
-
interface MsgDefinition<TMsg = unknown, TData = Record<string, unknown>> {
|
|
123
|
-
/**
|
|
124
|
-
* @zh 消息处理函数
|
|
125
|
-
* @en Message handler function
|
|
126
|
-
*/
|
|
127
|
-
handler: (msg: TMsg, ctx: MsgContext<TData>) => void | Promise<void>;
|
|
128
|
-
}
|
|
129
|
-
/**
|
|
130
|
-
* @zh 游戏服务器接口
|
|
131
|
-
* @en Game server interface
|
|
132
|
-
*/
|
|
133
|
-
interface GameServer {
|
|
134
|
-
/**
|
|
135
|
-
* @zh 启动服务器
|
|
136
|
-
* @en Start server
|
|
137
|
-
*/
|
|
138
|
-
start(): Promise<void>;
|
|
139
|
-
/**
|
|
140
|
-
* @zh 停止服务器
|
|
141
|
-
* @en Stop server
|
|
142
|
-
*/
|
|
143
|
-
stop(): Promise<void>;
|
|
144
|
-
/**
|
|
145
|
-
* @zh 广播消息
|
|
146
|
-
* @en Broadcast message
|
|
147
|
-
*/
|
|
148
|
-
broadcast<T>(name: string, data: T): void;
|
|
149
|
-
/**
|
|
150
|
-
* @zh 发送消息给指定连接
|
|
151
|
-
* @en Send message to specific connection
|
|
152
|
-
*/
|
|
153
|
-
send<T>(conn: ServerConnection, name: string, data: T): void;
|
|
154
|
-
/**
|
|
155
|
-
* @zh 获取所有连接
|
|
156
|
-
* @en Get all connections
|
|
157
|
-
*/
|
|
158
|
-
readonly connections: ReadonlyArray<ServerConnection>;
|
|
159
|
-
/**
|
|
160
|
-
* @zh 当前 Tick
|
|
161
|
-
* @en Current tick
|
|
162
|
-
*/
|
|
163
|
-
readonly tick: number;
|
|
164
|
-
/**
|
|
165
|
-
* @zh 注册房间类型
|
|
166
|
-
* @en Define room type
|
|
167
|
-
*/
|
|
168
|
-
define(name: string, roomClass: new () => unknown): void;
|
|
169
|
-
}
|
|
170
|
-
|
|
171
6
|
/**
|
|
172
7
|
* @zh 游戏服务器核心
|
|
173
8
|
* @en Game server core
|
|
@@ -235,240 +70,6 @@ declare function defineApi<TReq, TRes, TData = Record<string, unknown>>(definiti
|
|
|
235
70
|
*/
|
|
236
71
|
declare function defineMsg<TMsg, TData = Record<string, unknown>>(definition: MsgDefinition<TMsg, TData>): MsgDefinition<TMsg, TData>;
|
|
237
72
|
|
|
238
|
-
/**
|
|
239
|
-
* @zh 玩家类
|
|
240
|
-
* @en Player class
|
|
241
|
-
*/
|
|
242
|
-
|
|
243
|
-
/**
|
|
244
|
-
* @zh 玩家接口
|
|
245
|
-
* @en Player interface
|
|
246
|
-
*/
|
|
247
|
-
interface IPlayer<TData = Record<string, unknown>> {
|
|
248
|
-
readonly id: string;
|
|
249
|
-
readonly roomId: string;
|
|
250
|
-
data: TData;
|
|
251
|
-
send<T>(type: string, data: T): void;
|
|
252
|
-
leave(reason?: string): void;
|
|
253
|
-
}
|
|
254
|
-
/**
|
|
255
|
-
* @zh 玩家实现
|
|
256
|
-
* @en Player implementation
|
|
257
|
-
*/
|
|
258
|
-
declare class Player<TData = Record<string, unknown>> implements IPlayer<TData> {
|
|
259
|
-
readonly id: string;
|
|
260
|
-
readonly roomId: string;
|
|
261
|
-
data: TData;
|
|
262
|
-
private _conn;
|
|
263
|
-
private _sendFn;
|
|
264
|
-
private _leaveFn;
|
|
265
|
-
constructor(options: {
|
|
266
|
-
id: string;
|
|
267
|
-
roomId: string;
|
|
268
|
-
conn: Connection<any>;
|
|
269
|
-
sendFn: (conn: Connection<any>, type: string, data: unknown) => void;
|
|
270
|
-
leaveFn: (player: Player<TData>, reason?: string) => void;
|
|
271
|
-
initialData?: TData;
|
|
272
|
-
});
|
|
273
|
-
/**
|
|
274
|
-
* @zh 获取底层连接
|
|
275
|
-
* @en Get underlying connection
|
|
276
|
-
*/
|
|
277
|
-
get connection(): Connection<any>;
|
|
278
|
-
/**
|
|
279
|
-
* @zh 发送消息给玩家
|
|
280
|
-
* @en Send message to player
|
|
281
|
-
*/
|
|
282
|
-
send<T>(type: string, data: T): void;
|
|
283
|
-
/**
|
|
284
|
-
* @zh 让玩家离开房间
|
|
285
|
-
* @en Make player leave the room
|
|
286
|
-
*/
|
|
287
|
-
leave(reason?: string): void;
|
|
288
|
-
}
|
|
289
|
-
|
|
290
|
-
/**
|
|
291
|
-
* @zh 房间基类
|
|
292
|
-
* @en Room base class
|
|
293
|
-
*/
|
|
294
|
-
|
|
295
|
-
/**
|
|
296
|
-
* @zh 房间配置
|
|
297
|
-
* @en Room options
|
|
298
|
-
*/
|
|
299
|
-
interface RoomOptions {
|
|
300
|
-
[key: string]: unknown;
|
|
301
|
-
}
|
|
302
|
-
/**
|
|
303
|
-
* @zh 房间基类
|
|
304
|
-
* @en Room base class
|
|
305
|
-
*
|
|
306
|
-
* @example
|
|
307
|
-
* ```typescript
|
|
308
|
-
* class GameRoom extends Room {
|
|
309
|
-
* maxPlayers = 4
|
|
310
|
-
* tickRate = 20
|
|
311
|
-
*
|
|
312
|
-
* onJoin(player: Player) {
|
|
313
|
-
* this.broadcast('Joined', { id: player.id })
|
|
314
|
-
* }
|
|
315
|
-
*
|
|
316
|
-
* @onMessage('Move')
|
|
317
|
-
* handleMove(data: { x: number, y: number }, player: Player) {
|
|
318
|
-
* // handle move
|
|
319
|
-
* }
|
|
320
|
-
* }
|
|
321
|
-
* ```
|
|
322
|
-
*/
|
|
323
|
-
declare abstract class Room<TState = any, TPlayerData = Record<string, unknown>> {
|
|
324
|
-
/**
|
|
325
|
-
* @zh 最大玩家数
|
|
326
|
-
* @en Maximum players
|
|
327
|
-
*/
|
|
328
|
-
maxPlayers: number;
|
|
329
|
-
/**
|
|
330
|
-
* @zh Tick 速率(每秒),0 = 不自动 tick
|
|
331
|
-
* @en Tick rate (per second), 0 = no auto tick
|
|
332
|
-
*/
|
|
333
|
-
tickRate: number;
|
|
334
|
-
/**
|
|
335
|
-
* @zh 空房间自动销毁
|
|
336
|
-
* @en Auto dispose when empty
|
|
337
|
-
*/
|
|
338
|
-
autoDispose: boolean;
|
|
339
|
-
/**
|
|
340
|
-
* @zh 房间状态
|
|
341
|
-
* @en Room state
|
|
342
|
-
*/
|
|
343
|
-
state: TState;
|
|
344
|
-
private _id;
|
|
345
|
-
private _players;
|
|
346
|
-
private _locked;
|
|
347
|
-
private _disposed;
|
|
348
|
-
private _tickInterval;
|
|
349
|
-
private _lastTickTime;
|
|
350
|
-
private _broadcastFn;
|
|
351
|
-
private _sendFn;
|
|
352
|
-
private _disposeFn;
|
|
353
|
-
/**
|
|
354
|
-
* @zh 房间 ID
|
|
355
|
-
* @en Room ID
|
|
356
|
-
*/
|
|
357
|
-
get id(): string;
|
|
358
|
-
/**
|
|
359
|
-
* @zh 所有玩家
|
|
360
|
-
* @en All players
|
|
361
|
-
*/
|
|
362
|
-
get players(): ReadonlyArray<Player<TPlayerData>>;
|
|
363
|
-
/**
|
|
364
|
-
* @zh 玩家数量
|
|
365
|
-
* @en Player count
|
|
366
|
-
*/
|
|
367
|
-
get playerCount(): number;
|
|
368
|
-
/**
|
|
369
|
-
* @zh 是否已满
|
|
370
|
-
* @en Is full
|
|
371
|
-
*/
|
|
372
|
-
get isFull(): boolean;
|
|
373
|
-
/**
|
|
374
|
-
* @zh 是否已锁定
|
|
375
|
-
* @en Is locked
|
|
376
|
-
*/
|
|
377
|
-
get isLocked(): boolean;
|
|
378
|
-
/**
|
|
379
|
-
* @zh 是否已销毁
|
|
380
|
-
* @en Is disposed
|
|
381
|
-
*/
|
|
382
|
-
get isDisposed(): boolean;
|
|
383
|
-
/**
|
|
384
|
-
* @zh 房间创建时调用
|
|
385
|
-
* @en Called when room is created
|
|
386
|
-
*/
|
|
387
|
-
onCreate(options?: RoomOptions): void | Promise<void>;
|
|
388
|
-
/**
|
|
389
|
-
* @zh 玩家加入时调用
|
|
390
|
-
* @en Called when player joins
|
|
391
|
-
*/
|
|
392
|
-
onJoin(player: Player<TPlayerData>): void | Promise<void>;
|
|
393
|
-
/**
|
|
394
|
-
* @zh 玩家离开时调用
|
|
395
|
-
* @en Called when player leaves
|
|
396
|
-
*/
|
|
397
|
-
onLeave(player: Player<TPlayerData>, reason?: string): void | Promise<void>;
|
|
398
|
-
/**
|
|
399
|
-
* @zh 游戏循环
|
|
400
|
-
* @en Game tick
|
|
401
|
-
*/
|
|
402
|
-
onTick(dt: number): void;
|
|
403
|
-
/**
|
|
404
|
-
* @zh 房间销毁时调用
|
|
405
|
-
* @en Called when room is disposed
|
|
406
|
-
*/
|
|
407
|
-
onDispose(): void | Promise<void>;
|
|
408
|
-
/**
|
|
409
|
-
* @zh 广播消息给所有玩家
|
|
410
|
-
* @en Broadcast message to all players
|
|
411
|
-
*/
|
|
412
|
-
broadcast<T>(type: string, data: T): void;
|
|
413
|
-
/**
|
|
414
|
-
* @zh 广播消息给除指定玩家外的所有玩家
|
|
415
|
-
* @en Broadcast message to all players except one
|
|
416
|
-
*/
|
|
417
|
-
broadcastExcept<T>(except: Player<TPlayerData>, type: string, data: T): void;
|
|
418
|
-
/**
|
|
419
|
-
* @zh 获取玩家
|
|
420
|
-
* @en Get player by id
|
|
421
|
-
*/
|
|
422
|
-
getPlayer(id: string): Player<TPlayerData> | undefined;
|
|
423
|
-
/**
|
|
424
|
-
* @zh 踢出玩家
|
|
425
|
-
* @en Kick player
|
|
426
|
-
*/
|
|
427
|
-
kick(player: Player<TPlayerData>, reason?: string): void;
|
|
428
|
-
/**
|
|
429
|
-
* @zh 锁定房间
|
|
430
|
-
* @en Lock room
|
|
431
|
-
*/
|
|
432
|
-
lock(): void;
|
|
433
|
-
/**
|
|
434
|
-
* @zh 解锁房间
|
|
435
|
-
* @en Unlock room
|
|
436
|
-
*/
|
|
437
|
-
unlock(): void;
|
|
438
|
-
/**
|
|
439
|
-
* @zh 手动销毁房间
|
|
440
|
-
* @en Manually dispose room
|
|
441
|
-
*/
|
|
442
|
-
dispose(): void;
|
|
443
|
-
/**
|
|
444
|
-
* @internal
|
|
445
|
-
*/
|
|
446
|
-
_init(options: {
|
|
447
|
-
id: string;
|
|
448
|
-
sendFn: (conn: any, type: string, data: unknown) => void;
|
|
449
|
-
broadcastFn: (type: string, data: unknown) => void;
|
|
450
|
-
disposeFn: () => void;
|
|
451
|
-
}): void;
|
|
452
|
-
/**
|
|
453
|
-
* @internal
|
|
454
|
-
*/
|
|
455
|
-
_create(options?: RoomOptions): Promise<void>;
|
|
456
|
-
/**
|
|
457
|
-
* @internal
|
|
458
|
-
*/
|
|
459
|
-
_addPlayer(id: string, conn: any): Promise<Player<TPlayerData> | null>;
|
|
460
|
-
/**
|
|
461
|
-
* @internal
|
|
462
|
-
*/
|
|
463
|
-
_removePlayer(id: string, reason?: string): Promise<void>;
|
|
464
|
-
/**
|
|
465
|
-
* @internal
|
|
466
|
-
*/
|
|
467
|
-
_handleMessage(type: string, data: unknown, playerId: string): void;
|
|
468
|
-
private _startTick;
|
|
469
|
-
private _stopTick;
|
|
470
|
-
}
|
|
471
|
-
|
|
472
73
|
/**
|
|
473
74
|
* @zh 房间装饰器
|
|
474
75
|
* @en Room decorators
|
|
@@ -494,4 +95,4 @@ declare abstract class Room<TState = any, TPlayerData = Record<string, unknown>>
|
|
|
494
95
|
*/
|
|
495
96
|
declare function onMessage(type: string): MethodDecorator;
|
|
496
97
|
|
|
497
|
-
export {
|
|
98
|
+
export { ApiDefinition, GameServer, MsgDefinition, ServerConfig, createServer, defineApi, defineMsg, onMessage };
|