@vicerp/rpc 1.0.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/README.md +412 -0
- package/dist/cjs/adapters/fivem/client-server.d.ts +3 -0
- package/dist/cjs/adapters/fivem/client-server.d.ts.map +1 -0
- package/dist/cjs/adapters/fivem/client-server.js +6 -0
- package/dist/cjs/adapters/fivem/client-server.js.map +1 -0
- package/dist/cjs/adapters/fivem/client.d.ts +3 -0
- package/dist/cjs/adapters/fivem/client.d.ts.map +1 -0
- package/dist/cjs/adapters/fivem/client.js +6 -0
- package/dist/cjs/adapters/fivem/client.js.map +1 -0
- package/dist/cjs/adapters/fivem/fivem-client-server.transport.d.ts +17 -0
- package/dist/cjs/adapters/fivem/fivem-client-server.transport.d.ts.map +1 -0
- package/dist/cjs/adapters/fivem/fivem-client-server.transport.js +42 -0
- package/dist/cjs/adapters/fivem/fivem-client-server.transport.js.map +1 -0
- package/dist/cjs/adapters/fivem/fivem-client.transport.d.ts +17 -0
- package/dist/cjs/adapters/fivem/fivem-client.transport.d.ts.map +1 -0
- package/dist/cjs/adapters/fivem/fivem-client.transport.js +44 -0
- package/dist/cjs/adapters/fivem/fivem-client.transport.js.map +1 -0
- package/dist/cjs/adapters/fivem/fivem-nui.transport.d.ts +17 -0
- package/dist/cjs/adapters/fivem/fivem-nui.transport.d.ts.map +1 -0
- package/dist/cjs/adapters/fivem/fivem-nui.transport.js +56 -0
- package/dist/cjs/adapters/fivem/fivem-nui.transport.js.map +1 -0
- package/dist/cjs/adapters/fivem/fivem-server.transport.d.ts +34 -0
- package/dist/cjs/adapters/fivem/fivem-server.transport.d.ts.map +1 -0
- package/dist/cjs/adapters/fivem/fivem-server.transport.js +80 -0
- package/dist/cjs/adapters/fivem/fivem-server.transport.js.map +1 -0
- package/dist/cjs/adapters/fivem/fivem.types.d.ts +18 -0
- package/dist/cjs/adapters/fivem/fivem.types.d.ts.map +1 -0
- package/dist/cjs/adapters/fivem/fivem.types.js +3 -0
- package/dist/cjs/adapters/fivem/fivem.types.js.map +1 -0
- package/dist/cjs/adapters/fivem/index.d.ts +4 -0
- package/dist/cjs/adapters/fivem/index.d.ts.map +1 -0
- package/dist/cjs/adapters/fivem/index.js +8 -0
- package/dist/cjs/adapters/fivem/index.js.map +1 -0
- package/dist/cjs/adapters/fivem/nui.d.ts +3 -0
- package/dist/cjs/adapters/fivem/nui.d.ts.map +1 -0
- package/dist/cjs/adapters/fivem/nui.js +6 -0
- package/dist/cjs/adapters/fivem/nui.js.map +1 -0
- package/dist/cjs/adapters/fivem/server.d.ts +3 -0
- package/dist/cjs/adapters/fivem/server.d.ts.map +1 -0
- package/dist/cjs/adapters/fivem/server.js +7 -0
- package/dist/cjs/adapters/fivem/server.js.map +1 -0
- package/dist/cjs/adapters/rage/browser.d.ts +3 -0
- package/dist/cjs/adapters/rage/browser.d.ts.map +1 -0
- package/dist/cjs/adapters/rage/browser.js +6 -0
- package/dist/cjs/adapters/rage/browser.js.map +1 -0
- package/dist/cjs/adapters/rage/client-server.d.ts +3 -0
- package/dist/cjs/adapters/rage/client-server.d.ts.map +1 -0
- package/dist/cjs/adapters/rage/client-server.js +6 -0
- package/dist/cjs/adapters/rage/client-server.js.map +1 -0
- package/dist/cjs/adapters/rage/client.d.ts +3 -0
- package/dist/cjs/adapters/rage/client.d.ts.map +1 -0
- package/dist/cjs/adapters/rage/client.js +6 -0
- package/dist/cjs/adapters/rage/client.js.map +1 -0
- package/dist/cjs/adapters/rage/index.d.ts +4 -0
- package/dist/cjs/adapters/rage/index.d.ts.map +1 -0
- package/dist/cjs/adapters/rage/index.js +8 -0
- package/dist/cjs/adapters/rage/index.js.map +1 -0
- package/dist/cjs/adapters/rage/rage-browser.transport.d.ts +16 -0
- package/dist/cjs/adapters/rage/rage-browser.transport.d.ts.map +1 -0
- package/dist/cjs/adapters/rage/rage-browser.transport.js +44 -0
- package/dist/cjs/adapters/rage/rage-browser.transport.js.map +1 -0
- package/dist/cjs/adapters/rage/rage-client-server.transport.d.ts +18 -0
- package/dist/cjs/adapters/rage/rage-client-server.transport.d.ts.map +1 -0
- package/dist/cjs/adapters/rage/rage-client-server.transport.js +48 -0
- package/dist/cjs/adapters/rage/rage-client-server.transport.js.map +1 -0
- package/dist/cjs/adapters/rage/rage-client.transport.d.ts +19 -0
- package/dist/cjs/adapters/rage/rage-client.transport.d.ts.map +1 -0
- package/dist/cjs/adapters/rage/rage-client.transport.js +50 -0
- package/dist/cjs/adapters/rage/rage-client.transport.js.map +1 -0
- package/dist/cjs/adapters/rage/rage-server.transport.d.ts +32 -0
- package/dist/cjs/adapters/rage/rage-server.transport.d.ts.map +1 -0
- package/dist/cjs/adapters/rage/rage-server.transport.js +82 -0
- package/dist/cjs/adapters/rage/rage-server.transport.js.map +1 -0
- package/dist/cjs/adapters/rage/rage.types.d.ts +34 -0
- package/dist/cjs/adapters/rage/rage.types.d.ts.map +1 -0
- package/dist/cjs/adapters/rage/rage.types.js +3 -0
- package/dist/cjs/adapters/rage/rage.types.js.map +1 -0
- package/dist/cjs/adapters/rage/server.d.ts +3 -0
- package/dist/cjs/adapters/rage/server.d.ts.map +1 -0
- package/dist/cjs/adapters/rage/server.js +7 -0
- package/dist/cjs/adapters/rage/server.js.map +1 -0
- package/dist/cjs/core/errors.d.ts +7 -0
- package/dist/cjs/core/errors.d.ts.map +1 -0
- package/dist/cjs/core/errors.js +18 -0
- package/dist/cjs/core/errors.js.map +1 -0
- package/dist/cjs/core/id.d.ts +2 -0
- package/dist/cjs/core/id.d.ts.map +1 -0
- package/dist/cjs/core/id.js +13 -0
- package/dist/cjs/core/id.js.map +1 -0
- package/dist/cjs/core/index.d.ts +6 -0
- package/dist/cjs/core/index.d.ts.map +1 -0
- package/dist/cjs/core/index.js +26 -0
- package/dist/cjs/core/index.js.map +1 -0
- package/dist/cjs/core/relay.d.ts +12 -0
- package/dist/cjs/core/relay.d.ts.map +1 -0
- package/dist/cjs/core/relay.js +23 -0
- package/dist/cjs/core/relay.js.map +1 -0
- package/dist/cjs/core/rpc.d.ts +21 -0
- package/dist/cjs/core/rpc.d.ts.map +1 -0
- package/dist/cjs/core/rpc.js +147 -0
- package/dist/cjs/core/rpc.js.map +1 -0
- package/dist/cjs/core/types.d.ts +30 -0
- package/dist/cjs/core/types.d.ts.map +1 -0
- package/dist/cjs/core/types.js +3 -0
- package/dist/cjs/core/types.js.map +1 -0
- package/dist/cjs/index.d.ts +2 -0
- package/dist/cjs/index.d.ts.map +1 -0
- package/dist/cjs/index.js +18 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/react/RpcProvider.d.ts +10 -0
- package/dist/cjs/react/RpcProvider.d.ts.map +1 -0
- package/dist/cjs/react/RpcProvider.js +19 -0
- package/dist/cjs/react/RpcProvider.js.map +1 -0
- package/dist/cjs/react/index.d.ts +8 -0
- package/dist/cjs/react/index.d.ts.map +1 -0
- package/dist/cjs/react/index.js +15 -0
- package/dist/cjs/react/index.js.map +1 -0
- package/dist/cjs/react/useRpc.d.ts +3 -0
- package/dist/cjs/react/useRpc.d.ts.map +1 -0
- package/dist/cjs/react/useRpc.js +13 -0
- package/dist/cjs/react/useRpc.js.map +1 -0
- package/dist/cjs/react/useRpcCall.d.ts +13 -0
- package/dist/cjs/react/useRpcCall.d.ts.map +1 -0
- package/dist/cjs/react/useRpcCall.js +35 -0
- package/dist/cjs/react/useRpcCall.js.map +1 -0
- package/dist/cjs/react/useRpcEvent.d.ts +3 -0
- package/dist/cjs/react/useRpcEvent.d.ts.map +1 -0
- package/dist/cjs/react/useRpcEvent.js +20 -0
- package/dist/cjs/react/useRpcEvent.js.map +1 -0
- package/dist/cjs/react/useRpcRegister.d.ts +3 -0
- package/dist/cjs/react/useRpcRegister.d.ts.map +1 -0
- package/dist/cjs/react/useRpcRegister.js +20 -0
- package/dist/cjs/react/useRpcRegister.js.map +1 -0
- package/dist/esm/adapters/fivem/client-server.d.ts +3 -0
- package/dist/esm/adapters/fivem/client-server.d.ts.map +1 -0
- package/dist/esm/adapters/fivem/client-server.js +2 -0
- package/dist/esm/adapters/fivem/client-server.js.map +1 -0
- package/dist/esm/adapters/fivem/client.d.ts +3 -0
- package/dist/esm/adapters/fivem/client.d.ts.map +1 -0
- package/dist/esm/adapters/fivem/client.js +2 -0
- package/dist/esm/adapters/fivem/client.js.map +1 -0
- package/dist/esm/adapters/fivem/fivem-client-server.transport.d.ts +17 -0
- package/dist/esm/adapters/fivem/fivem-client-server.transport.d.ts.map +1 -0
- package/dist/esm/adapters/fivem/fivem-client-server.transport.js +38 -0
- package/dist/esm/adapters/fivem/fivem-client-server.transport.js.map +1 -0
- package/dist/esm/adapters/fivem/fivem-client.transport.d.ts +17 -0
- package/dist/esm/adapters/fivem/fivem-client.transport.d.ts.map +1 -0
- package/dist/esm/adapters/fivem/fivem-client.transport.js +40 -0
- package/dist/esm/adapters/fivem/fivem-client.transport.js.map +1 -0
- package/dist/esm/adapters/fivem/fivem-nui.transport.d.ts +17 -0
- package/dist/esm/adapters/fivem/fivem-nui.transport.d.ts.map +1 -0
- package/dist/esm/adapters/fivem/fivem-nui.transport.js +52 -0
- package/dist/esm/adapters/fivem/fivem-nui.transport.js.map +1 -0
- package/dist/esm/adapters/fivem/fivem-server.transport.d.ts +34 -0
- package/dist/esm/adapters/fivem/fivem-server.transport.d.ts.map +1 -0
- package/dist/esm/adapters/fivem/fivem-server.transport.js +75 -0
- package/dist/esm/adapters/fivem/fivem-server.transport.js.map +1 -0
- package/dist/esm/adapters/fivem/fivem.types.d.ts +18 -0
- package/dist/esm/adapters/fivem/fivem.types.d.ts.map +1 -0
- package/dist/esm/adapters/fivem/fivem.types.js +2 -0
- package/dist/esm/adapters/fivem/fivem.types.js.map +1 -0
- package/dist/esm/adapters/fivem/index.d.ts +4 -0
- package/dist/esm/adapters/fivem/index.d.ts.map +1 -0
- package/dist/esm/adapters/fivem/index.js +3 -0
- package/dist/esm/adapters/fivem/index.js.map +1 -0
- package/dist/esm/adapters/fivem/nui.d.ts +3 -0
- package/dist/esm/adapters/fivem/nui.d.ts.map +1 -0
- package/dist/esm/adapters/fivem/nui.js +2 -0
- package/dist/esm/adapters/fivem/nui.js.map +1 -0
- package/dist/esm/adapters/fivem/server.d.ts +3 -0
- package/dist/esm/adapters/fivem/server.d.ts.map +1 -0
- package/dist/esm/adapters/fivem/server.js +2 -0
- package/dist/esm/adapters/fivem/server.js.map +1 -0
- package/dist/esm/adapters/rage/browser.d.ts +3 -0
- package/dist/esm/adapters/rage/browser.d.ts.map +1 -0
- package/dist/esm/adapters/rage/browser.js +2 -0
- package/dist/esm/adapters/rage/browser.js.map +1 -0
- package/dist/esm/adapters/rage/client-server.d.ts +3 -0
- package/dist/esm/adapters/rage/client-server.d.ts.map +1 -0
- package/dist/esm/adapters/rage/client-server.js +2 -0
- package/dist/esm/adapters/rage/client-server.js.map +1 -0
- package/dist/esm/adapters/rage/client.d.ts +3 -0
- package/dist/esm/adapters/rage/client.d.ts.map +1 -0
- package/dist/esm/adapters/rage/client.js +2 -0
- package/dist/esm/adapters/rage/client.js.map +1 -0
- package/dist/esm/adapters/rage/index.d.ts +4 -0
- package/dist/esm/adapters/rage/index.d.ts.map +1 -0
- package/dist/esm/adapters/rage/index.js +3 -0
- package/dist/esm/adapters/rage/index.js.map +1 -0
- package/dist/esm/adapters/rage/rage-browser.transport.d.ts +16 -0
- package/dist/esm/adapters/rage/rage-browser.transport.d.ts.map +1 -0
- package/dist/esm/adapters/rage/rage-browser.transport.js +40 -0
- package/dist/esm/adapters/rage/rage-browser.transport.js.map +1 -0
- package/dist/esm/adapters/rage/rage-client-server.transport.d.ts +18 -0
- package/dist/esm/adapters/rage/rage-client-server.transport.d.ts.map +1 -0
- package/dist/esm/adapters/rage/rage-client-server.transport.js +44 -0
- package/dist/esm/adapters/rage/rage-client-server.transport.js.map +1 -0
- package/dist/esm/adapters/rage/rage-client.transport.d.ts +19 -0
- package/dist/esm/adapters/rage/rage-client.transport.d.ts.map +1 -0
- package/dist/esm/adapters/rage/rage-client.transport.js +46 -0
- package/dist/esm/adapters/rage/rage-client.transport.js.map +1 -0
- package/dist/esm/adapters/rage/rage-server.transport.d.ts +32 -0
- package/dist/esm/adapters/rage/rage-server.transport.d.ts.map +1 -0
- package/dist/esm/adapters/rage/rage-server.transport.js +77 -0
- package/dist/esm/adapters/rage/rage-server.transport.js.map +1 -0
- package/dist/esm/adapters/rage/rage.types.d.ts +34 -0
- package/dist/esm/adapters/rage/rage.types.d.ts.map +1 -0
- package/dist/esm/adapters/rage/rage.types.js +2 -0
- package/dist/esm/adapters/rage/rage.types.js.map +1 -0
- package/dist/esm/adapters/rage/server.d.ts +3 -0
- package/dist/esm/adapters/rage/server.d.ts.map +1 -0
- package/dist/esm/adapters/rage/server.js +2 -0
- package/dist/esm/adapters/rage/server.js.map +1 -0
- package/dist/esm/core/errors.d.ts +7 -0
- package/dist/esm/core/errors.d.ts.map +1 -0
- package/dist/esm/core/errors.js +13 -0
- package/dist/esm/core/errors.js.map +1 -0
- package/dist/esm/core/id.d.ts +2 -0
- package/dist/esm/core/id.d.ts.map +1 -0
- package/dist/esm/core/id.js +10 -0
- package/dist/esm/core/id.js.map +1 -0
- package/dist/esm/core/index.d.ts +6 -0
- package/dist/esm/core/index.d.ts.map +1 -0
- package/dist/esm/core/index.js +6 -0
- package/dist/esm/core/index.js.map +1 -0
- package/dist/esm/core/relay.d.ts +12 -0
- package/dist/esm/core/relay.d.ts.map +1 -0
- package/dist/esm/core/relay.js +19 -0
- package/dist/esm/core/relay.js.map +1 -0
- package/dist/esm/core/rpc.d.ts +21 -0
- package/dist/esm/core/rpc.d.ts.map +1 -0
- package/dist/esm/core/rpc.js +143 -0
- package/dist/esm/core/rpc.js.map +1 -0
- package/dist/esm/core/types.d.ts +30 -0
- package/dist/esm/core/types.d.ts.map +1 -0
- package/dist/esm/core/types.js +2 -0
- package/dist/esm/core/types.js.map +1 -0
- package/dist/esm/index.d.ts +2 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js +2 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/react/RpcProvider.d.ts +10 -0
- package/dist/esm/react/RpcProvider.d.ts.map +1 -0
- package/dist/esm/react/RpcProvider.js +15 -0
- package/dist/esm/react/RpcProvider.js.map +1 -0
- package/dist/esm/react/index.d.ts +8 -0
- package/dist/esm/react/index.d.ts.map +1 -0
- package/dist/esm/react/index.js +6 -0
- package/dist/esm/react/index.js.map +1 -0
- package/dist/esm/react/useRpc.d.ts +3 -0
- package/dist/esm/react/useRpc.d.ts.map +1 -0
- package/dist/esm/react/useRpc.js +10 -0
- package/dist/esm/react/useRpc.js.map +1 -0
- package/dist/esm/react/useRpcCall.d.ts +13 -0
- package/dist/esm/react/useRpcCall.d.ts.map +1 -0
- package/dist/esm/react/useRpcCall.js +32 -0
- package/dist/esm/react/useRpcCall.js.map +1 -0
- package/dist/esm/react/useRpcEvent.d.ts +3 -0
- package/dist/esm/react/useRpcEvent.d.ts.map +1 -0
- package/dist/esm/react/useRpcEvent.js +17 -0
- package/dist/esm/react/useRpcEvent.js.map +1 -0
- package/dist/esm/react/useRpcRegister.d.ts +3 -0
- package/dist/esm/react/useRpcRegister.d.ts.map +1 -0
- package/dist/esm/react/useRpcRegister.js +17 -0
- package/dist/esm/react/useRpcRegister.js.map +1 -0
- package/package.json +170 -0
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { RpcTransport, RpcMessage } from '../../core/types';
|
|
2
|
+
import { FiveMServerGlobal } from './fivem.types';
|
|
3
|
+
/**
|
|
4
|
+
* Per-player RPC transport on the FiveM server side.
|
|
5
|
+
*
|
|
6
|
+
* Sends messages to a specific player's client via TriggerClientEvent().
|
|
7
|
+
* Receives messages via the hub when the player sends to the server.
|
|
8
|
+
*/
|
|
9
|
+
export declare class FiveMServerTransport implements RpcTransport {
|
|
10
|
+
private readonly playerId;
|
|
11
|
+
private readonly fivem;
|
|
12
|
+
private handler;
|
|
13
|
+
constructor(playerId: number, fivem: FiveMServerGlobal);
|
|
14
|
+
send(message: RpcMessage): void;
|
|
15
|
+
onMessage(handler: (message: RpcMessage) => void): void;
|
|
16
|
+
/** Called by the hub when a message arrives for this player. */
|
|
17
|
+
deliverMessage(message: RpcMessage): void;
|
|
18
|
+
destroy(): void;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Singleton hub that registers ONE global event listener for all incoming
|
|
22
|
+
* client-to-server RPC messages, then routes them to the correct per-player transport.
|
|
23
|
+
*
|
|
24
|
+
* Uses FiveM's `source` global to determine which player sent the message.
|
|
25
|
+
*/
|
|
26
|
+
export declare class FiveMServerTransportHub {
|
|
27
|
+
private readonly fivem;
|
|
28
|
+
private transports;
|
|
29
|
+
constructor(fivem: FiveMServerGlobal);
|
|
30
|
+
createTransport(playerId: number): FiveMServerTransport;
|
|
31
|
+
removeTransport(playerId: number): void;
|
|
32
|
+
destroy(): void;
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=fivem-server.transport.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fivem-server.transport.d.ts","sourceRoot":"","sources":["../../../../src/adapters/fivem/fivem-server.transport.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAKlD;;;;;GAKG;AACH,qBAAa,oBAAqB,YAAW,YAAY;IAIrD,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,KAAK;IAJxB,OAAO,CAAC,OAAO,CAAgD;gBAG5C,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,iBAAiB;IAG3C,IAAI,CAAC,OAAO,EAAE,UAAU,GAAG,IAAI;IAK/B,SAAS,CAAC,OAAO,EAAE,CAAC,OAAO,EAAE,UAAU,KAAK,IAAI,GAAG,IAAI;IAIvD,gEAAgE;IAChE,cAAc,CAAC,OAAO,EAAE,UAAU,GAAG,IAAI;IAIzC,OAAO,IAAI,IAAI;CAGhB;AAED;;;;;GAKG;AACH,qBAAa,uBAAuB;IAGtB,OAAO,CAAC,QAAQ,CAAC,KAAK;IAFlC,OAAO,CAAC,UAAU,CAA2C;gBAEhC,KAAK,EAAE,iBAAiB;IAerD,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,oBAAoB;IAMvD,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAMvC,OAAO,IAAI,IAAI;CAMhB"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.FiveMServerTransportHub = exports.FiveMServerTransport = void 0;
|
|
4
|
+
const C2S_EVENT = '__vicerpc:c2s';
|
|
5
|
+
const S2C_EVENT = '__vicerpc:s2c';
|
|
6
|
+
/**
|
|
7
|
+
* Per-player RPC transport on the FiveM server side.
|
|
8
|
+
*
|
|
9
|
+
* Sends messages to a specific player's client via TriggerClientEvent().
|
|
10
|
+
* Receives messages via the hub when the player sends to the server.
|
|
11
|
+
*/
|
|
12
|
+
class FiveMServerTransport {
|
|
13
|
+
playerId;
|
|
14
|
+
fivem;
|
|
15
|
+
handler = null;
|
|
16
|
+
constructor(playerId, fivem) {
|
|
17
|
+
this.playerId = playerId;
|
|
18
|
+
this.fivem = fivem;
|
|
19
|
+
}
|
|
20
|
+
send(message) {
|
|
21
|
+
const json = JSON.stringify(message);
|
|
22
|
+
this.fivem.TriggerClientEvent(S2C_EVENT, this.playerId, json);
|
|
23
|
+
}
|
|
24
|
+
onMessage(handler) {
|
|
25
|
+
this.handler = handler;
|
|
26
|
+
}
|
|
27
|
+
/** Called by the hub when a message arrives for this player. */
|
|
28
|
+
deliverMessage(message) {
|
|
29
|
+
this.handler?.(message);
|
|
30
|
+
}
|
|
31
|
+
destroy() {
|
|
32
|
+
this.handler = null;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
exports.FiveMServerTransport = FiveMServerTransport;
|
|
36
|
+
/**
|
|
37
|
+
* Singleton hub that registers ONE global event listener for all incoming
|
|
38
|
+
* client-to-server RPC messages, then routes them to the correct per-player transport.
|
|
39
|
+
*
|
|
40
|
+
* Uses FiveM's `source` global to determine which player sent the message.
|
|
41
|
+
*/
|
|
42
|
+
class FiveMServerTransportHub {
|
|
43
|
+
fivem;
|
|
44
|
+
transports = new Map();
|
|
45
|
+
constructor(fivem) {
|
|
46
|
+
this.fivem = fivem;
|
|
47
|
+
this.fivem.onNet(C2S_EVENT, (...args) => {
|
|
48
|
+
const json = args[0];
|
|
49
|
+
const playerId = this.fivem.source;
|
|
50
|
+
const transport = this.transports.get(playerId);
|
|
51
|
+
if (!transport)
|
|
52
|
+
return;
|
|
53
|
+
try {
|
|
54
|
+
const message = JSON.parse(json);
|
|
55
|
+
transport.deliverMessage(message);
|
|
56
|
+
}
|
|
57
|
+
catch {
|
|
58
|
+
// Ignore malformed messages
|
|
59
|
+
}
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
createTransport(playerId) {
|
|
63
|
+
const transport = new FiveMServerTransport(playerId, this.fivem);
|
|
64
|
+
this.transports.set(playerId, transport);
|
|
65
|
+
return transport;
|
|
66
|
+
}
|
|
67
|
+
removeTransport(playerId) {
|
|
68
|
+
const transport = this.transports.get(playerId);
|
|
69
|
+
transport?.destroy();
|
|
70
|
+
this.transports.delete(playerId);
|
|
71
|
+
}
|
|
72
|
+
destroy() {
|
|
73
|
+
for (const transport of this.transports.values()) {
|
|
74
|
+
transport.destroy();
|
|
75
|
+
}
|
|
76
|
+
this.transports.clear();
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
exports.FiveMServerTransportHub = FiveMServerTransportHub;
|
|
80
|
+
//# sourceMappingURL=fivem-server.transport.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fivem-server.transport.js","sourceRoot":"","sources":["../../../../src/adapters/fivem/fivem-server.transport.ts"],"names":[],"mappings":";;;AAGA,MAAM,SAAS,GAAG,eAAe,CAAC;AAClC,MAAM,SAAS,GAAG,eAAe,CAAC;AAElC;;;;;GAKG;AACH,MAAa,oBAAoB;IAIZ;IACA;IAJX,OAAO,GAA2C,IAAI,CAAC;IAE/D,YACmB,QAAgB,EAChB,KAAwB;QADxB,aAAQ,GAAR,QAAQ,CAAQ;QAChB,UAAK,GAAL,KAAK,CAAmB;IACxC,CAAC;IAEJ,IAAI,CAAC,OAAmB;QACtB,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QACrC,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IAChE,CAAC;IAED,SAAS,CAAC,OAAsC;QAC9C,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAED,gEAAgE;IAChE,cAAc,CAAC,OAAmB;QAChC,IAAI,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,CAAC;IAC1B,CAAC;IAED,OAAO;QACL,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;IACtB,CAAC;CACF;AAzBD,oDAyBC;AAED;;;;;GAKG;AACH,MAAa,uBAAuB;IAGL;IAFrB,UAAU,GAAG,IAAI,GAAG,EAAgC,CAAC;IAE7D,YAA6B,KAAwB;QAAxB,UAAK,GAAL,KAAK,CAAmB;QACnD,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC,GAAG,IAAe,EAAE,EAAE;YACjD,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAW,CAAC;YAC/B,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;YACnC,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAChD,IAAI,CAAC,SAAS;gBAAE,OAAO;YACvB,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAe,CAAC;gBAC/C,SAAS,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;YACpC,CAAC;YAAC,MAAM,CAAC;gBACP,4BAA4B;YAC9B,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED,eAAe,CAAC,QAAgB;QAC9B,MAAM,SAAS,GAAG,IAAI,oBAAoB,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QACjE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;QACzC,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,eAAe,CAAC,QAAgB;QAC9B,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAChD,SAAS,EAAE,OAAO,EAAE,CAAC;QACrB,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACnC,CAAC;IAED,OAAO;QACL,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,EAAE,CAAC;YACjD,SAAS,CAAC,OAAO,EAAE,CAAC;QACtB,CAAC;QACD,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;IAC1B,CAAC;CACF;AApCD,0DAoCC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/** Type declarations for FiveM NUI globals */
|
|
2
|
+
export interface FiveMNuiGlobal {
|
|
3
|
+
GetParentResourceName(): string;
|
|
4
|
+
}
|
|
5
|
+
/** Type declarations for FiveM client script globals */
|
|
6
|
+
export interface FiveMClientGlobal {
|
|
7
|
+
SendNUIMessage(data: unknown): void;
|
|
8
|
+
RegisterNUICallback(name: string, handler: (data: unknown, cb: (result: unknown) => void) => void): void;
|
|
9
|
+
TriggerServerEvent(eventName: string, ...args: unknown[]): void;
|
|
10
|
+
on(eventName: string, handler: (...args: unknown[]) => void): void;
|
|
11
|
+
}
|
|
12
|
+
/** Type declarations for FiveM server-side globals */
|
|
13
|
+
export interface FiveMServerGlobal {
|
|
14
|
+
TriggerClientEvent(eventName: string, playerId: number, ...args: unknown[]): void;
|
|
15
|
+
onNet(eventName: string, handler: (...args: unknown[]) => void): void;
|
|
16
|
+
source: number;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=fivem.types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fivem.types.d.ts","sourceRoot":"","sources":["../../../../src/adapters/fivem/fivem.types.ts"],"names":[],"mappings":"AAAA,8CAA8C;AAC9C,MAAM,WAAW,cAAc;IAC7B,qBAAqB,IAAI,MAAM,CAAC;CACjC;AAED,wDAAwD;AACxD,MAAM,WAAW,iBAAiB;IAChC,cAAc,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAAC;IACpC,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,KAAK,IAAI,GAAG,IAAI,CAAC;IACzG,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IAChE,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,GAAG,IAAI,CAAC;CACpE;AAED,sDAAsD;AACtD,MAAM,WAAW,iBAAiB;IAChC,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IAClF,KAAK,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,GAAG,IAAI,CAAC;IACtE,MAAM,EAAE,MAAM,CAAC;CAChB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fivem.types.js","sourceRoot":"","sources":["../../../../src/adapters/fivem/fivem.types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/adapters/fivem/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAChE,mBAAmB,eAAe,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.FiveMClientTransport = exports.FiveMNuiTransport = void 0;
|
|
4
|
+
var fivem_nui_transport_1 = require("./fivem-nui.transport");
|
|
5
|
+
Object.defineProperty(exports, "FiveMNuiTransport", { enumerable: true, get: function () { return fivem_nui_transport_1.FiveMNuiTransport; } });
|
|
6
|
+
var fivem_client_transport_1 = require("./fivem-client.transport");
|
|
7
|
+
Object.defineProperty(exports, "FiveMClientTransport", { enumerable: true, get: function () { return fivem_client_transport_1.FiveMClientTransport; } });
|
|
8
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/adapters/fivem/index.ts"],"names":[],"mappings":";;;AAAA,6DAA0D;AAAjD,wHAAA,iBAAiB,OAAA;AAC1B,mEAAgE;AAAvD,8HAAA,oBAAoB,OAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nui.d.ts","sourceRoot":"","sources":["../../../../src/adapters/fivem/nui.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,mBAAmB,eAAe,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.FiveMNuiTransport = void 0;
|
|
4
|
+
var fivem_nui_transport_1 = require("./fivem-nui.transport");
|
|
5
|
+
Object.defineProperty(exports, "FiveMNuiTransport", { enumerable: true, get: function () { return fivem_nui_transport_1.FiveMNuiTransport; } });
|
|
6
|
+
//# sourceMappingURL=nui.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nui.js","sourceRoot":"","sources":["../../../../src/adapters/fivem/nui.ts"],"names":[],"mappings":";;;AAAA,6DAA0D;AAAjD,wHAAA,iBAAiB,OAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../../src/adapters/fivem/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AACzF,mBAAmB,eAAe,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.FiveMServerTransportHub = exports.FiveMServerTransport = void 0;
|
|
4
|
+
var fivem_server_transport_1 = require("./fivem-server.transport");
|
|
5
|
+
Object.defineProperty(exports, "FiveMServerTransport", { enumerable: true, get: function () { return fivem_server_transport_1.FiveMServerTransport; } });
|
|
6
|
+
Object.defineProperty(exports, "FiveMServerTransportHub", { enumerable: true, get: function () { return fivem_server_transport_1.FiveMServerTransportHub; } });
|
|
7
|
+
//# sourceMappingURL=server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../../../src/adapters/fivem/server.ts"],"names":[],"mappings":";;;AAAA,mEAAyF;AAAhF,8HAAA,oBAAoB,OAAA;AAAE,iIAAA,uBAAuB,OAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../../../../src/adapters/rage/browser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAChE,mBAAmB,cAAc,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RageBrowserTransport = void 0;
|
|
4
|
+
var rage_browser_transport_1 = require("./rage-browser.transport");
|
|
5
|
+
Object.defineProperty(exports, "RageBrowserTransport", { enumerable: true, get: function () { return rage_browser_transport_1.RageBrowserTransport; } });
|
|
6
|
+
//# sourceMappingURL=browser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"browser.js","sourceRoot":"","sources":["../../../../src/adapters/rage/browser.ts"],"names":[],"mappings":";;;AAAA,mEAAgE;AAAvD,8HAAA,oBAAoB,OAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client-server.d.ts","sourceRoot":"","sources":["../../../../src/adapters/rage/client-server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAC3E,mBAAmB,cAAc,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RageClientServerTransport = void 0;
|
|
4
|
+
var rage_client_server_transport_1 = require("./rage-client-server.transport");
|
|
5
|
+
Object.defineProperty(exports, "RageClientServerTransport", { enumerable: true, get: function () { return rage_client_server_transport_1.RageClientServerTransport; } });
|
|
6
|
+
//# sourceMappingURL=client-server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client-server.js","sourceRoot":"","sources":["../../../../src/adapters/rage/client-server.ts"],"names":[],"mappings":";;;AAAA,+EAA2E;AAAlE,yIAAA,yBAAyB,OAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../../src/adapters/rage/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,mBAAmB,cAAc,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RageClientTransport = void 0;
|
|
4
|
+
var rage_client_transport_1 = require("./rage-client.transport");
|
|
5
|
+
Object.defineProperty(exports, "RageClientTransport", { enumerable: true, get: function () { return rage_client_transport_1.RageClientTransport; } });
|
|
6
|
+
//# sourceMappingURL=client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../../../src/adapters/rage/client.ts"],"names":[],"mappings":";;;AAAA,iEAA8D;AAArD,4HAAA,mBAAmB,OAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/adapters/rage/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,mBAAmB,cAAc,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RageClientTransport = exports.RageBrowserTransport = void 0;
|
|
4
|
+
var rage_browser_transport_1 = require("./rage-browser.transport");
|
|
5
|
+
Object.defineProperty(exports, "RageBrowserTransport", { enumerable: true, get: function () { return rage_browser_transport_1.RageBrowserTransport; } });
|
|
6
|
+
var rage_client_transport_1 = require("./rage-client.transport");
|
|
7
|
+
Object.defineProperty(exports, "RageClientTransport", { enumerable: true, get: function () { return rage_client_transport_1.RageClientTransport; } });
|
|
8
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/adapters/rage/index.ts"],"names":[],"mappings":";;;AAAA,mEAAgE;AAAvD,8HAAA,oBAAoB,OAAA;AAC7B,iEAA8D;AAArD,4HAAA,mBAAmB,OAAA"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { RpcTransport, RpcMessage } from '../../core/types';
|
|
2
|
+
/**
|
|
3
|
+
* RAGE:MP CEF (browser) side transport.
|
|
4
|
+
*
|
|
5
|
+
* Sends messages to the client script via mp.trigger().
|
|
6
|
+
* Receives messages from the client script via a global window function
|
|
7
|
+
* that the client calls with browser.call().
|
|
8
|
+
*/
|
|
9
|
+
export declare class RageBrowserTransport implements RpcTransport {
|
|
10
|
+
private handler;
|
|
11
|
+
constructor();
|
|
12
|
+
send(message: RpcMessage): void;
|
|
13
|
+
onMessage(handler: (message: RpcMessage) => void): void;
|
|
14
|
+
destroy(): void;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=rage-browser.transport.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rage-browser.transport.d.ts","sourceRoot":"","sources":["../../../../src/adapters/rage/rage-browser.transport.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAK5D;;;;;;GAMG;AACH,qBAAa,oBAAqB,YAAW,YAAY;IACvD,OAAO,CAAC,OAAO,CAAgD;;IAc/D,IAAI,CAAC,OAAO,EAAE,UAAU,GAAG,IAAI;IAQ/B,SAAS,CAAC,OAAO,EAAE,CAAC,OAAO,EAAE,UAAU,KAAK,IAAI,GAAG,IAAI;IAIvD,OAAO,IAAI,IAAI;CAIhB"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RageBrowserTransport = void 0;
|
|
4
|
+
const B2C_EVENT = '__vicerpc:b2c';
|
|
5
|
+
const C2B_EVENT = '__vicerpc:c2b';
|
|
6
|
+
/**
|
|
7
|
+
* RAGE:MP CEF (browser) side transport.
|
|
8
|
+
*
|
|
9
|
+
* Sends messages to the client script via mp.trigger().
|
|
10
|
+
* Receives messages from the client script via a global window function
|
|
11
|
+
* that the client calls with browser.call().
|
|
12
|
+
*/
|
|
13
|
+
class RageBrowserTransport {
|
|
14
|
+
handler = null;
|
|
15
|
+
constructor() {
|
|
16
|
+
window[C2B_EVENT] = (json) => {
|
|
17
|
+
if (!this.handler)
|
|
18
|
+
return;
|
|
19
|
+
try {
|
|
20
|
+
const message = JSON.parse(json);
|
|
21
|
+
this.handler(message);
|
|
22
|
+
}
|
|
23
|
+
catch {
|
|
24
|
+
// Ignore malformed messages
|
|
25
|
+
}
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
send(message) {
|
|
29
|
+
const json = JSON.stringify(message);
|
|
30
|
+
const mp = window.mp;
|
|
31
|
+
if (mp?.trigger) {
|
|
32
|
+
mp.trigger(B2C_EVENT, json);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
onMessage(handler) {
|
|
36
|
+
this.handler = handler;
|
|
37
|
+
}
|
|
38
|
+
destroy() {
|
|
39
|
+
this.handler = null;
|
|
40
|
+
delete window[C2B_EVENT];
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
exports.RageBrowserTransport = RageBrowserTransport;
|
|
44
|
+
//# sourceMappingURL=rage-browser.transport.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rage-browser.transport.js","sourceRoot":"","sources":["../../../../src/adapters/rage/rage-browser.transport.ts"],"names":[],"mappings":";;;AAEA,MAAM,SAAS,GAAG,eAAe,CAAC;AAClC,MAAM,SAAS,GAAG,eAAe,CAAC;AAElC;;;;;;GAMG;AACH,MAAa,oBAAoB;IACvB,OAAO,GAA2C,IAAI,CAAC;IAE/D;QACG,MAA6C,CAAC,SAAS,CAAC,GAAG,CAAC,IAAY,EAAE,EAAE;YAC3E,IAAI,CAAC,IAAI,CAAC,OAAO;gBAAE,OAAO;YAC1B,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAe,CAAC;gBAC/C,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YACxB,CAAC;YAAC,MAAM,CAAC;gBACP,4BAA4B;YAC9B,CAAC;QACH,CAAC,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,OAAmB;QACtB,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QACrC,MAAM,EAAE,GAAI,MAAmF,CAAC,EAAE,CAAC;QACnG,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC;YAChB,EAAE,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;IAED,SAAS,CAAC,OAAsC;QAC9C,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAED,OAAO;QACL,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,OAAQ,MAA6C,CAAC,SAAS,CAAC,CAAC;IACnE,CAAC;CACF;AA/BD,oDA+BC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { RpcTransport, RpcMessage } from '../../core/types';
|
|
2
|
+
import { RageMpClientGlobal } from './rage.types';
|
|
3
|
+
/**
|
|
4
|
+
* RAGE:MP client script transport for client <-> server communication.
|
|
5
|
+
*
|
|
6
|
+
* Sends messages to the server via mp.events.callRemote().
|
|
7
|
+
* Receives messages from the server via mp.events.
|
|
8
|
+
*/
|
|
9
|
+
export declare class RageClientServerTransport implements RpcTransport {
|
|
10
|
+
private readonly mp;
|
|
11
|
+
private handler;
|
|
12
|
+
private eventHandler;
|
|
13
|
+
constructor(mp: RageMpClientGlobal);
|
|
14
|
+
send(message: RpcMessage): void;
|
|
15
|
+
onMessage(handler: (message: RpcMessage) => void): void;
|
|
16
|
+
destroy(): void;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=rage-client-server.transport.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rage-client-server.transport.d.ts","sourceRoot":"","sources":["../../../../src/adapters/rage/rage-client-server.transport.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAKlD;;;;;GAKG;AACH,qBAAa,yBAA0B,YAAW,YAAY;IAIhD,OAAO,CAAC,QAAQ,CAAC,EAAE;IAH/B,OAAO,CAAC,OAAO,CAAgD;IAC/D,OAAO,CAAC,YAAY,CAA+C;gBAEtC,EAAE,EAAE,kBAAkB;IAcnD,IAAI,CAAC,OAAO,EAAE,UAAU,GAAG,IAAI;IAK/B,SAAS,CAAC,OAAO,EAAE,CAAC,OAAO,EAAE,UAAU,KAAK,IAAI,GAAG,IAAI;IAIvD,OAAO,IAAI,IAAI;CAOhB"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RageClientServerTransport = void 0;
|
|
4
|
+
const C2S_EVENT = '__vicerpc:c2s';
|
|
5
|
+
const S2C_EVENT = '__vicerpc:s2c';
|
|
6
|
+
/**
|
|
7
|
+
* RAGE:MP client script transport for client <-> server communication.
|
|
8
|
+
*
|
|
9
|
+
* Sends messages to the server via mp.events.callRemote().
|
|
10
|
+
* Receives messages from the server via mp.events.
|
|
11
|
+
*/
|
|
12
|
+
class RageClientServerTransport {
|
|
13
|
+
mp;
|
|
14
|
+
handler = null;
|
|
15
|
+
eventHandler = null;
|
|
16
|
+
constructor(mp) {
|
|
17
|
+
this.mp = mp;
|
|
18
|
+
this.eventHandler = (_json) => {
|
|
19
|
+
if (!this.handler)
|
|
20
|
+
return;
|
|
21
|
+
try {
|
|
22
|
+
const json = typeof _json === 'string' ? _json : String(_json);
|
|
23
|
+
const message = JSON.parse(json);
|
|
24
|
+
this.handler(message);
|
|
25
|
+
}
|
|
26
|
+
catch {
|
|
27
|
+
// Ignore malformed messages
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
this.mp.events.add(S2C_EVENT, this.eventHandler);
|
|
31
|
+
}
|
|
32
|
+
send(message) {
|
|
33
|
+
const json = JSON.stringify(message);
|
|
34
|
+
this.mp.events.callRemote(C2S_EVENT, json);
|
|
35
|
+
}
|
|
36
|
+
onMessage(handler) {
|
|
37
|
+
this.handler = handler;
|
|
38
|
+
}
|
|
39
|
+
destroy() {
|
|
40
|
+
this.handler = null;
|
|
41
|
+
if (this.eventHandler) {
|
|
42
|
+
this.mp.events.remove(S2C_EVENT, this.eventHandler);
|
|
43
|
+
this.eventHandler = null;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
exports.RageClientServerTransport = RageClientServerTransport;
|
|
48
|
+
//# sourceMappingURL=rage-client-server.transport.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rage-client-server.transport.js","sourceRoot":"","sources":["../../../../src/adapters/rage/rage-client-server.transport.ts"],"names":[],"mappings":";;;AAGA,MAAM,SAAS,GAAG,eAAe,CAAC;AAClC,MAAM,SAAS,GAAG,eAAe,CAAC;AAElC;;;;;GAKG;AACH,MAAa,yBAAyB;IAIP;IAHrB,OAAO,GAA2C,IAAI,CAAC;IACvD,YAAY,GAA0C,IAAI,CAAC;IAEnE,YAA6B,EAAsB;QAAtB,OAAE,GAAF,EAAE,CAAoB;QACjD,IAAI,CAAC,YAAY,GAAG,CAAC,KAAc,EAAE,EAAE;YACrC,IAAI,CAAC,IAAI,CAAC,OAAO;gBAAE,OAAO;YAC1B,IAAI,CAAC;gBACH,MAAM,IAAI,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBAC/D,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAe,CAAC;gBAC/C,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YACxB,CAAC;YAAC,MAAM,CAAC;gBACP,4BAA4B;YAC9B,CAAC;QACH,CAAC,CAAC;QACF,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;IACnD,CAAC;IAED,IAAI,CAAC,OAAmB;QACtB,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QACrC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IAC7C,CAAC;IAED,SAAS,CAAC,OAAsC;QAC9C,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAED,OAAO;QACL,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACtB,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;YACpD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QAC3B,CAAC;IACH,CAAC;CACF;AAlCD,8DAkCC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { RpcTransport, RpcMessage } from '../../core/types';
|
|
2
|
+
import { RageMpBrowserObject, RageMpClientGlobal } from './rage.types';
|
|
3
|
+
/**
|
|
4
|
+
* RAGE:MP client script side transport.
|
|
5
|
+
*
|
|
6
|
+
* Sends messages to the CEF browser via browser.call().
|
|
7
|
+
* Receives messages from the CEF browser via mp.events.
|
|
8
|
+
*/
|
|
9
|
+
export declare class RageClientTransport implements RpcTransport {
|
|
10
|
+
private readonly browser;
|
|
11
|
+
private readonly mp;
|
|
12
|
+
private handler;
|
|
13
|
+
private eventHandler;
|
|
14
|
+
constructor(browser: RageMpBrowserObject, mp: RageMpClientGlobal);
|
|
15
|
+
send(message: RpcMessage): void;
|
|
16
|
+
onMessage(handler: (message: RpcMessage) => void): void;
|
|
17
|
+
destroy(): void;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=rage-client.transport.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rage-client.transport.d.ts","sourceRoot":"","sources":["../../../../src/adapters/rage/rage-client.transport.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAKvE;;;;;GAKG;AACH,qBAAa,mBAAoB,YAAW,YAAY;IAKpD,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,EAAE;IALrB,OAAO,CAAC,OAAO,CAAgD;IAC/D,OAAO,CAAC,YAAY,CAA+C;gBAGhD,OAAO,EAAE,mBAAmB,EAC5B,EAAE,EAAE,kBAAkB;IAezC,IAAI,CAAC,OAAO,EAAE,UAAU,GAAG,IAAI;IAK/B,SAAS,CAAC,OAAO,EAAE,CAAC,OAAO,EAAE,UAAU,KAAK,IAAI,GAAG,IAAI;IAIvD,OAAO,IAAI,IAAI;CAOhB"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RageClientTransport = void 0;
|
|
4
|
+
const B2C_EVENT = '__vicerpc:b2c';
|
|
5
|
+
const C2B_EVENT = '__vicerpc:c2b';
|
|
6
|
+
/**
|
|
7
|
+
* RAGE:MP client script side transport.
|
|
8
|
+
*
|
|
9
|
+
* Sends messages to the CEF browser via browser.call().
|
|
10
|
+
* Receives messages from the CEF browser via mp.events.
|
|
11
|
+
*/
|
|
12
|
+
class RageClientTransport {
|
|
13
|
+
browser;
|
|
14
|
+
mp;
|
|
15
|
+
handler = null;
|
|
16
|
+
eventHandler = null;
|
|
17
|
+
constructor(browser, mp) {
|
|
18
|
+
this.browser = browser;
|
|
19
|
+
this.mp = mp;
|
|
20
|
+
this.eventHandler = (_json) => {
|
|
21
|
+
if (!this.handler)
|
|
22
|
+
return;
|
|
23
|
+
try {
|
|
24
|
+
const json = typeof _json === 'string' ? _json : String(_json);
|
|
25
|
+
const message = JSON.parse(json);
|
|
26
|
+
this.handler(message);
|
|
27
|
+
}
|
|
28
|
+
catch {
|
|
29
|
+
// Ignore malformed messages
|
|
30
|
+
}
|
|
31
|
+
};
|
|
32
|
+
this.mp.events.add(B2C_EVENT, this.eventHandler);
|
|
33
|
+
}
|
|
34
|
+
send(message) {
|
|
35
|
+
const json = JSON.stringify(message);
|
|
36
|
+
this.browser.call(C2B_EVENT, json);
|
|
37
|
+
}
|
|
38
|
+
onMessage(handler) {
|
|
39
|
+
this.handler = handler;
|
|
40
|
+
}
|
|
41
|
+
destroy() {
|
|
42
|
+
this.handler = null;
|
|
43
|
+
if (this.eventHandler) {
|
|
44
|
+
this.mp.events.remove(B2C_EVENT, this.eventHandler);
|
|
45
|
+
this.eventHandler = null;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
exports.RageClientTransport = RageClientTransport;
|
|
50
|
+
//# sourceMappingURL=rage-client.transport.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rage-client.transport.js","sourceRoot":"","sources":["../../../../src/adapters/rage/rage-client.transport.ts"],"names":[],"mappings":";;;AAGA,MAAM,SAAS,GAAG,eAAe,CAAC;AAClC,MAAM,SAAS,GAAG,eAAe,CAAC;AAElC;;;;;GAKG;AACH,MAAa,mBAAmB;IAKX;IACA;IALX,OAAO,GAA2C,IAAI,CAAC;IACvD,YAAY,GAA0C,IAAI,CAAC;IAEnE,YACmB,OAA4B,EAC5B,EAAsB;QADtB,YAAO,GAAP,OAAO,CAAqB;QAC5B,OAAE,GAAF,EAAE,CAAoB;QAEvC,IAAI,CAAC,YAAY,GAAG,CAAC,KAAc,EAAE,EAAE;YACrC,IAAI,CAAC,IAAI,CAAC,OAAO;gBAAE,OAAO;YAC1B,IAAI,CAAC;gBACH,MAAM,IAAI,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBAC/D,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAe,CAAC;gBAC/C,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YACxB,CAAC;YAAC,MAAM,CAAC;gBACP,4BAA4B;YAC9B,CAAC;QACH,CAAC,CAAC;QACF,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;IACnD,CAAC;IAED,IAAI,CAAC,OAAmB;QACtB,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QACrC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IACrC,CAAC;IAED,SAAS,CAAC,OAAsC;QAC9C,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAED,OAAO;QACL,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACtB,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;YACpD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QAC3B,CAAC;IACH,CAAC;CACF;AArCD,kDAqCC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { RpcTransport, RpcMessage } from '../../core/types';
|
|
2
|
+
import { RageMpServerPlayerObject, RageMpServerGlobal } from './rage.types';
|
|
3
|
+
/**
|
|
4
|
+
* Per-player RPC transport on the RAGE:MP server side.
|
|
5
|
+
*
|
|
6
|
+
* Sends messages to the player's client via player.call().
|
|
7
|
+
* Receives messages via the hub when the player sends to the server.
|
|
8
|
+
*/
|
|
9
|
+
export declare class RageServerTransport implements RpcTransport {
|
|
10
|
+
private readonly player;
|
|
11
|
+
private handler;
|
|
12
|
+
constructor(player: RageMpServerPlayerObject);
|
|
13
|
+
send(message: RpcMessage): void;
|
|
14
|
+
onMessage(handler: (message: RpcMessage) => void): void;
|
|
15
|
+
/** Called by the hub when a message arrives for this player. */
|
|
16
|
+
deliverMessage(message: RpcMessage): void;
|
|
17
|
+
destroy(): void;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Singleton hub that registers ONE global event listener for all incoming
|
|
21
|
+
* client-to-server RPC messages, then routes them to the correct per-player transport.
|
|
22
|
+
*/
|
|
23
|
+
export declare class RageServerTransportHub {
|
|
24
|
+
private readonly mp;
|
|
25
|
+
private transports;
|
|
26
|
+
private eventHandler;
|
|
27
|
+
constructor(mp: RageMpServerGlobal);
|
|
28
|
+
createTransport(player: RageMpServerPlayerObject): RageServerTransport;
|
|
29
|
+
removeTransport(player: RageMpServerPlayerObject): void;
|
|
30
|
+
destroy(): void;
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=rage-server.transport.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rage-server.transport.d.ts","sourceRoot":"","sources":["../../../../src/adapters/rage/rage-server.transport.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAK5E;;;;;GAKG;AACH,qBAAa,mBAAoB,YAAW,YAAY;IAG1C,OAAO,CAAC,QAAQ,CAAC,MAAM;IAFnC,OAAO,CAAC,OAAO,CAAgD;gBAElC,MAAM,EAAE,wBAAwB;IAE7D,IAAI,CAAC,OAAO,EAAE,UAAU,GAAG,IAAI;IAK/B,SAAS,CAAC,OAAO,EAAE,CAAC,OAAO,EAAE,UAAU,KAAK,IAAI,GAAG,IAAI;IAIvD,gEAAgE;IAChE,cAAc,CAAC,OAAO,EAAE,UAAU,GAAG,IAAI;IAIzC,OAAO,IAAI,IAAI;CAGhB;AAED;;;GAGG;AACH,qBAAa,sBAAsB;IAIrB,OAAO,CAAC,QAAQ,CAAC,EAAE;IAH/B,OAAO,CAAC,UAAU,CAA4D;IAC9E,OAAO,CAAC,YAAY,CAA+C;gBAEtC,EAAE,EAAE,kBAAkB;IAgBnD,eAAe,CAAC,MAAM,EAAE,wBAAwB,GAAG,mBAAmB;IAMtE,eAAe,CAAC,MAAM,EAAE,wBAAwB,GAAG,IAAI;IAMvD,OAAO,IAAI,IAAI;CAUhB"}
|