docs: bump readme.md + metadata

This commit is contained in:
2026-09-28 02:05:40 +01:00
parent c4c9d02fd4
commit 40c322e4b7
6 changed files with 132 additions and 169 deletions
+53
View File
@@ -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