* feat(server): add distributed room support - Add DistributedRoomManager for multi-server room management - Add MemoryAdapter for testing and standalone mode - Add RedisAdapter for production multi-server deployments - Add LoadBalancedRouter with 5 load balancing strategies - Add distributed config option to createServer - Add $redirect message for cross-server player redirection - Add failover mechanism for automatic room recovery - Add room:migrated and server:draining event types - Update documentation (zh/en) * feat(server): add Schema validation system and binary encoding optimization ## Schema Validation System - Add lightweight schema validation system (s.object, s.string, s.number, etc.) - Support auto type inference with Infer<> generic - Integrate schema validation into API/message handlers - Add defineApiWithSchema and defineMsgWithSchema helpers ## Binary Encoding Optimization - Add native WebSocket binary frame support via sendBinary() - Add PacketType.Binary for efficient binary data transmission - Optimize ECSRoom.broadcastBinary() to use native binary ## Architecture Improvements - Extract BaseValidator to separate file to eliminate code duplication - Add ECSRoom export to main index.ts for better discoverability - Add Core.worldManager initialization check in ECSRoom constructor - Remove deprecated validate field from ApiDefinition (use schema instead) ## Documentation - Add Schema validation documentation in Chinese and English * fix(rpc): resolve ESLint warnings with proper types - Replace `any` with proper WebSocket type in connection.ts - Add IncomingMessage type for request handling in index.ts - Use Record<string, Handler> pattern instead of `any` casting - Replace `any` with `unknown` in ProtocolDef and type inference
63 lines
1.4 KiB
JSON
63 lines
1.4 KiB
JSON
{
|
|
"name": "@esengine/rpc",
|
|
"version": "1.1.3",
|
|
"description": "Elegant type-safe RPC library for ESEngine",
|
|
"type": "module",
|
|
"main": "./dist/index.js",
|
|
"module": "./dist/index.js",
|
|
"types": "./dist/index.d.ts",
|
|
"exports": {
|
|
".": {
|
|
"import": "./dist/index.js",
|
|
"types": "./dist/index.d.ts"
|
|
},
|
|
"./server": {
|
|
"import": "./dist/server/index.js",
|
|
"types": "./dist/server/index.d.ts"
|
|
},
|
|
"./client": {
|
|
"import": "./dist/client/index.js",
|
|
"types": "./dist/client/index.d.ts"
|
|
},
|
|
"./codec": {
|
|
"import": "./dist/codec/index.js",
|
|
"types": "./dist/codec/index.d.ts"
|
|
}
|
|
},
|
|
"files": [
|
|
"dist",
|
|
"module.json"
|
|
],
|
|
"scripts": {
|
|
"build": "tsup && tsc --emitDeclarationOnly",
|
|
"build:watch": "tsup --watch",
|
|
"type-check": "tsc --noEmit",
|
|
"lint": "eslint src --max-warnings 0",
|
|
"lint:fix": "eslint src --fix",
|
|
"clean": "rimraf dist"
|
|
},
|
|
"dependencies": {},
|
|
"optionalDependencies": {
|
|
"msgpackr": "^1.11.0"
|
|
},
|
|
"devDependencies": {
|
|
"@types/ws": "^8.5.13",
|
|
"msgpackr": "^1.11.0",
|
|
"ws": "^8.18.0",
|
|
"tsup": "^8.0.0",
|
|
"typescript": "^5.7.0"
|
|
},
|
|
"peerDependencies": {
|
|
"typescript": ">=5.0.0",
|
|
"ws": ">=8.0.0"
|
|
},
|
|
"peerDependenciesMeta": {
|
|
"ws": {
|
|
"optional": true
|
|
}
|
|
},
|
|
"publishConfig": {
|
|
"access": "public"
|
|
}
|
|
}
|