feat: js-waku migration docs (0.0.26->0.0.27) (#213)
* feat: setup migrations for js-waku and nwaku * feat: add migrations for 0.026->0.027
This commit is contained in:
parent
40f0380fc7
commit
583a4105b6
|
@ -0,0 +1,201 @@
|
||||||
|
# Migrating to Waku v0.027
|
||||||
|
|
||||||
|
A migration guide for refactoring your application code from Waku v0.026 to v0.027.
|
||||||
|
|
||||||
|
## Table of Contents
|
||||||
|
|
||||||
|
- [Migrating to Waku v0.027](#migrating-to-waku-v0027)
|
||||||
|
- [Table of Contents](#table-of-contents)
|
||||||
|
- [Network Configuration](#network-configuration)
|
||||||
|
- [Default Network Configuration](#default-network-configuration)
|
||||||
|
- [Static Sharding](#static-sharding)
|
||||||
|
- [Auto Sharding](#auto-sharding)
|
||||||
|
- [Pubsub Topic Configuration](#pubsub-topic-configuration)
|
||||||
|
- [Removed APIs](#removed-apis)
|
||||||
|
- [Type Changes](#type-changes)
|
||||||
|
- [Internal/Private Utility Function Changes](#internalprivate-utility-function-changes)
|
||||||
|
|
||||||
|
## Network Configuration
|
||||||
|
|
||||||
|
The way to configure network settings for a Waku node has been simplified. The new NetworkConfig type only allows for Static Sharding or Auto Sharding.
|
||||||
|
|
||||||
|
### Default Network Configuration
|
||||||
|
|
||||||
|
If no network configuration is provided when creating a Light Node, The Waku Network configuration will be used by default.
|
||||||
|
|
||||||
|
**Before**
|
||||||
|
```typescript
|
||||||
|
import { createLightNode } from "@waku/sdk";
|
||||||
|
|
||||||
|
const waku = await createLightNode();
|
||||||
|
// This would use the default pubsub topic, that was, `/waku/2/default-waku/proto`
|
||||||
|
```
|
||||||
|
|
||||||
|
**After**
|
||||||
|
```typescript
|
||||||
|
import { createLightNode } from "@waku/sdk";
|
||||||
|
|
||||||
|
const waku = await createLightNode();
|
||||||
|
// This will now use The Waku Network configuration by default:
|
||||||
|
// { clusterId: 1, shards: [0,1,2,3,4,5,6,7] }
|
||||||
|
```
|
||||||
|
|
||||||
|
### Static Sharding
|
||||||
|
|
||||||
|
**Before**
|
||||||
|
```typescript
|
||||||
|
import { createLightNode } from "@waku/sdk";
|
||||||
|
|
||||||
|
const waku = await createLightNode({
|
||||||
|
shardInfo: {
|
||||||
|
clusterId: 1,
|
||||||
|
shards: [0, 1, 2, 3]
|
||||||
|
}
|
||||||
|
});
|
||||||
|
```
|
||||||
|
|
||||||
|
**After**
|
||||||
|
```typescript
|
||||||
|
import { createLightNode } from "@waku/sdk";
|
||||||
|
|
||||||
|
const waku = await createLightNode({
|
||||||
|
networkConfig: {
|
||||||
|
clusterId: 1,
|
||||||
|
shards: [0, 1, 2, 3]
|
||||||
|
}
|
||||||
|
});
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
### Auto Sharding
|
||||||
|
|
||||||
|
**Before**
|
||||||
|
```typescript
|
||||||
|
import { createLightNode } from "@waku/sdk";
|
||||||
|
|
||||||
|
const waku = await createLightNode({
|
||||||
|
shardInfo: {
|
||||||
|
clusterId: 1,
|
||||||
|
contentTopics: ["/my-app/1/notifications/proto"]
|
||||||
|
}
|
||||||
|
});
|
||||||
|
```
|
||||||
|
|
||||||
|
**After**
|
||||||
|
```typescript
|
||||||
|
import { createLightNode } from "@waku/sdk";
|
||||||
|
|
||||||
|
const waku = await createLightNode({
|
||||||
|
networkConfig: {
|
||||||
|
clusterId: 1,
|
||||||
|
contentTopics: ["/my-app/1/notifications/proto"]
|
||||||
|
}
|
||||||
|
});
|
||||||
|
```
|
||||||
|
|
||||||
|
## Pubsub Topic Configuration
|
||||||
|
|
||||||
|
Named pubsub topics are no longer supported. You must use either Static Sharding or Auto Sharding to configure pubsub topics.
|
||||||
|
|
||||||
|
**Before**
|
||||||
|
```typescript
|
||||||
|
import { createLightNode } from "@waku/sdk";
|
||||||
|
|
||||||
|
const waku = await createLightNode({
|
||||||
|
pubsubTopics: ["/waku/2/default-waku/proto"]
|
||||||
|
});
|
||||||
|
```
|
||||||
|
|
||||||
|
**After**
|
||||||
|
|
||||||
|
Use Static Sharding:
|
||||||
|
```typescript
|
||||||
|
import { createLightNode } from "@waku/sdk";
|
||||||
|
|
||||||
|
const waku = await createLightNode({
|
||||||
|
networkConfig: {
|
||||||
|
clusterId: 1,
|
||||||
|
shards: [0, 1, 2, 3, 4, 5, 6, 7]
|
||||||
|
}
|
||||||
|
});
|
||||||
|
```
|
||||||
|
|
||||||
|
Or use Auto Sharding:
|
||||||
|
```typescript
|
||||||
|
import { createLightNode } from "@waku/sdk";
|
||||||
|
|
||||||
|
const waku = await createLightNode({
|
||||||
|
networkConfig: {
|
||||||
|
clusterId: 1,
|
||||||
|
contentTopics: ["/your-app/1/default/proto"]
|
||||||
|
}
|
||||||
|
});
|
||||||
|
```
|
||||||
|
|
||||||
|
## Removed APIs
|
||||||
|
|
||||||
|
The following APIs have been removed:
|
||||||
|
|
||||||
|
- ApplicationInfo type: Use `string` for application and version in `NetworkConfig` instead.
|
||||||
|
- `shardInfo` option in `createLightNode`: Use `networkConfig` instead.
|
||||||
|
- `pubsubTopics` option in `createLightNode`: Use `networkConfig` with Static Sharding or Auto Sharding instead.
|
||||||
|
|
||||||
|
If you were using `ApplicationInfo` before, you should now use `ContentTopicInfo` (Auto Sharding) and specify your application and version in the content topic `string`.
|
||||||
|
|
||||||
|
**Before**
|
||||||
|
```typescript
|
||||||
|
import { createLightNode } from "@waku/sdk";
|
||||||
|
|
||||||
|
const waku = await createLightNode({
|
||||||
|
shardInfo: {
|
||||||
|
clusterId: 1,
|
||||||
|
application: "my-app",
|
||||||
|
version: "1"
|
||||||
|
}
|
||||||
|
});
|
||||||
|
```
|
||||||
|
|
||||||
|
**After**
|
||||||
|
```typescript
|
||||||
|
import { createLightNode } from "@waku/sdk";
|
||||||
|
|
||||||
|
const waku = await createLightNode({
|
||||||
|
networkConfig: {
|
||||||
|
clusterId: 1,
|
||||||
|
contentTopics: ["/my-app/1/default/proto"]
|
||||||
|
}
|
||||||
|
});
|
||||||
|
```
|
||||||
|
|
||||||
|
## Type Changes
|
||||||
|
|
||||||
|
- `ShardingParams` has been removed. Use `NetworkConfig` instead.
|
||||||
|
- `NetworkConfig` is now defined as `StaticSharding` | `AutoSharding`.
|
||||||
|
- `StaticSharding` is equivalent to the previous `ShardInfo`.
|
||||||
|
- `AutoSharding` is equivalent to the previous `ContentTopicInfo`.
|
||||||
|
|
||||||
|
## Internal/Private Utility Function Changes
|
||||||
|
|
||||||
|
Several utility functions have been updated or added:
|
||||||
|
|
||||||
|
- `ensureShardingConfigured` has been removed. Use `derivePubsubTopicsFromNetworkConfig` instead.
|
||||||
|
- New function `derivePubsubTopicsFromNetworkConfig` has been added to derive pubsub topics from the network configuration.
|
||||||
|
- `shardInfoToPubsubTopics` now accepts `Partial<NetworkConfig>` instead of `Partial<ShardingParams>`.
|
||||||
|
- New function `pubsubTopicsToShardInfo` has been added to convert pubsub topics to a ShardInfo object.
|
||||||
|
|
||||||
|
If you were using any of these utility functions directly, you'll need to update your code accordingly.
|
||||||
|
|
||||||
|
**Before**
|
||||||
|
```typescript
|
||||||
|
import { ensureShardingConfigured } from "@waku/utils";
|
||||||
|
|
||||||
|
const result = ensureShardingConfigured(shardInfo);
|
||||||
|
```
|
||||||
|
|
||||||
|
**After**
|
||||||
|
```typescript
|
||||||
|
import { derivePubsubTopicsFromNetworkConfig } from "@waku/utils";
|
||||||
|
|
||||||
|
const pubsubTopics = derivePubsubTopicsFromNetworkConfig(networkConfig);
|
||||||
|
```
|
||||||
|
Note: The default `NetworkConfig` for The Waku Network is now `{ clusterId: 1, shards: [0,1,2,3,4,5,6,7] }.`
|
Loading…
Reference in New Issue