mirror of
https://github.com/rilaxik/fivem-rpc.git
synced 2026-09-28 01:29:13 +00:00
docs: bump readme.md + metadata
This commit is contained in:
@@ -0,0 +1,53 @@
|
||||
# Migrating from 0.1 to 1.0
|
||||
|
||||
Upgrade server, client and webview together. The payload format changed, so 0.1 and 1.0 cannot talk to each other
|
||||
|
||||
## Creating the instance
|
||||
|
||||
`RPCFactory` is gone, use `createRPC`:
|
||||
|
||||
```ts
|
||||
// 0.1
|
||||
import { RPCFactory } from '@entityseven/fivem-rpc'
|
||||
export const rpc = new RPCFactory({ env: 'server' }).get()
|
||||
|
||||
// 1.0
|
||||
import { createRPC } from '@entityseven/fivem-rpc'
|
||||
export const rpc = createRPC({ env: 'server' })
|
||||
```
|
||||
|
||||
## Errors and timeouts
|
||||
|
||||
- a failed call now rejects on the caller with `RPCError` (`code`, `message`, `details`). In 0.1 the error was thrown on the receiving side and the call never settled
|
||||
- every call times out after 5000 ms by default. Change it with `RPCConfig.timeout`, `0` restores the 0.1 behaviour (wait forever)
|
||||
- `RPCErrors.INVALID_DATA` and `RPCErrors.NO_PLAYER` are removed (invalid payloads are dropped), `RPCErrors.TIMEOUT` and `RPCErrors.HANDLER_ERROR` are new
|
||||
- the texts of `RPCErrors.UNKNOWN_NATIVE` and `RPCErrors.UNKNOWN_ENVIRONMENT` changed. Compare `error.code` with `RPCErrors`, not message strings
|
||||
|
||||
See [Errors](rpc/readme.md#errors) and [How it works](rpc/readme.md#how-it-works)
|
||||
|
||||
## Typing
|
||||
|
||||
Declarations are now module augmentation of interfaces, the `types` / `typeRoots` tsconfig setup is no longer needed. Follow the [shared-types readme](shared-types/readme.md), then:
|
||||
|
||||
- commands are interface keys instead of string unions:
|
||||
|
||||
```ts
|
||||
// 0.1
|
||||
export type RPCCommands_Server = 'ban' | 'kick'
|
||||
|
||||
// 1.0
|
||||
interface RPCCommands_Server {
|
||||
ban: true
|
||||
kick: true
|
||||
}
|
||||
```
|
||||
|
||||
- remove placeholder members such as `_(): void`. An interface with any member is strict, an empty one accepts everything
|
||||
|
||||
## Other API changes
|
||||
|
||||
- `onCommand` callbacks get `args` as `string[]` (the generic argument type is gone)
|
||||
- `RPCNativeClientNetworksEvents` is renamed to `RPCNativeClientNetworkEvents`
|
||||
- internal types are no longer exported: `RPCEnvironmentResolved`, `RPCEventType`, `RPCEvents`, `RPCState`, `RPCStateRaw`, `RPCStateWeb`, `RPCStateWebRaw`. Use `RPCInstanceServer`, `RPCInstanceClient` or `RPCInstanceWebview` for the instance type
|
||||
- server listeners get the player id from FiveM's `source`. Ids a client puts into the payload are ignored
|
||||
- `emitClientEveryone` is one-way: clients run their listener but no longer send a response
|
||||
Reference in New Issue
Block a user