@mysten/sui
Version:
Sui TypeScript API
91 lines (64 loc) • 2.62 kB
Markdown
# SDK Maintainers
> Migration guide for SDK maintainers and library authors
# Upgrading SDKs to @mysten/sui@2.0.0
This guide covers the key breaking changes for SDK maintainers building on top of `@mysten/sui`.
For comprehensive SDK development patterns, see the [Building SDKs guide](/sui/sdk-building).
## Use `ClientWithCoreApi`
Accept `ClientWithCoreApi` instead of `SuiClient` to support all 3 Sui clients (JSON-RPC, GraphQL,
gRPC):
```diff
- import { SuiClient } from '@mysten/sui/client';
+ import type { ClientWithCoreApi } from '@mysten/sui/client';
- client: SuiClient;
+ client: ClientWithCoreApi;
}
```
## Access Data via `client.core` methods
All data access methods are namespaced under `client.core`:
```diff
- const result = await this.client.getObject({ objectId });
+ const result = await this.client.core.getObject({ objectId });
- const result = await this.client.getOwnedObjects({ owner });
+ const result = await this.client.core.listOwnedObjects({ owner });
```
| v1.x Method | v2.0 Method |
| -------------------------------- | --------------------------------- |
| `client.getObject()` | `client.core.getObject()` |
| `client.getOwnedObjects()` | `client.core.listOwnedObjects()` |
| `client.getDynamicFieldObject()` | `client.core.getDynamicField()` |
| `client.getDynamicFields()` | `client.core.listDynamicFields()` |
| `client.multiGetObjects()` | `client.core.getObjects()` |
See the [Core API documentation](/sui/clients/core) for all available methods.
## Use Peer Dependencies
Declare `@mysten/*` packages as peer dependencies:
```json
{
"peerDependencies": {
"@mysten/sui": "^2.0.0"
},
"devDependencies": {
"@mysten/sui": "^2.0.0"
}
}
```
## Client Extensions
v2.0 introduces client extensions that let users add your SDK to any Sui client:
```typescript
return {
name: 'mySDK',
register: (client: ClientWithCoreApi) => {
return new MySDKClient({ client });
},
};
}
// Users can then extend any client
const client = new SuiGrpcClient({ ... }).$extend(mySDK());
await client.mySDK.doSomething();
```
See the [Building SDKs guide](/sui/sdk-building#client-extensions) for the complete extension
pattern.
## Code Generation
Use **[@mysten/codegen](/codegen)** to generate type-safe TypeScript bindings from your Move
packages. See the [codegen documentation](/codegen) for setup instructions.
For complete SDK development patterns including client extensions, transaction thunks, and best
practices, see the [Building SDKs guide](/sui/sdk-building).