@latticexyz/network
#
@latticexyz/network
#
Table of contents
#
Enumerations
#
Classes
#
Interfaces
#
Type Aliases
- Ack
- CacheStore
- Clock
- Config
- ContractConfig
- ContractEvent
- ContractSchemaValueTypes
- ContractTopics
- Contracts
- ContractsConfig
- ECSCache
- Input
- Mappings
- Network
- NetworkComponentUpdate
- NetworkEvent
- Providers
- State
- SyncStateStruct
- SyncWorkerConfig
- SystemCall
- SystemCallTransaction
- TopicsConfig
- TxQueue
#
Variables
#
Functions
- createBlockNumberStream
- createCacheStore
- createContracts
- createDecode
- createDecoder
- createEncoder
- createFaucetService
- createFetchSystemCallsFromEvents
- createFetchWorldEventsInBlockRange
- createLatestEventStreamRPC
- createLatestEventStreamService
- createNetwork
- createProvider
- createReconnectingProvider
- createRelayStream
- createSigner
- createSnapshotClient
- createStreamClient
- createSyncWorker
- createSystemExecutor
- createTopics
- createTransformWorldEventsFromStream
- createTxQueue
- createWorldTopics
- ensureNetworkIsUp
- fetchBlock
- fetchEventsInBlockRange
- fetchEventsInBlockRangeChunked
- fetchLogs
- fetchSnapshot
- fetchSnapshotChunked
- fetchStateInBlockRange
- flattenValue
- formatComponentID
- formatEntityID
- getCacheId
- getCacheStoreEntries
- getIndexDBCacheStoreBlockNumber
- getIndexDbECSCache
- getRevertReason
- getSnapshotBlockNumber
- isNetworkComponentUpdateEvent
- isSystemCallEvent
- loadIndexDbCacheStore
- mergeCacheStores
- messagePayload
- parseSystemCallsFromStreamEvents
- reduceFetchedState
- reduceFetchedStateV2
- saveCacheStoreToIndexDb
- storeEvent
- storeEvents
#
Enumerations
#
ConnectionState
• ConnectionState: Enum ConnectionState
#
Defined in
network/src/createProvider.ts:40
#
ContractSchemaValue
• ContractSchemaValue: Enum ContractSchemaValue
#
Defined in
#
InputType
• InputType: Enum InputType
#
Defined in
network/src/workers/SyncWorker.ts:54
#
NetworkEvents
• NetworkEvents: Enum NetworkEvents
#
Defined in
#
SyncState
• SyncState: Enum SyncState
#
Defined in
network/src/workers/constants.ts:3
#
Classes
#
SyncWorker
• SyncWorker: Class SyncWorker<C>
#
Type parameters
#
Defined in
network/src/workers/SyncWorker.ts:63
#
Interfaces
#
ClockConfig
• ClockConfig: Interface ClockConfig
#
Defined in
#
NetworkConfig
• NetworkConfig: Interface NetworkConfig
#
Defined in
#
ProviderConfig
• ProviderConfig: Interface ProviderConfig
#
Defined in
#
Type Aliases
#
Ack
Ƭ Ack: Object
#
Type declaration
#
Defined in
network/src/workers/SyncWorker.ts:59
#
CacheStore
Ƭ CacheStore: ReturnType<typeof createCacheStore>
#
Defined in
network/src/workers/CacheStore.ts:12
#
Clock
Ƭ Clock: Object
#
Type declaration
#
Defined in
#
Config
Ƭ Config: Object
#
Type declaration
#
Defined in
network/src/workers/SyncWorker.ts:58
#
ContractConfig
Ƭ ContractConfig: Object
#
Type declaration
#
Defined in
#
ContractEvent
Ƭ ContractEvent: Object
#
Type parameters
#
Type declaration
#
Defined in
#
ContractSchemaValueTypes
Ƭ ContractSchemaValueTypes: Object
#
Type declaration
#
Defined in
#
ContractTopics
Ƭ ContractTopics: Object
#
Type declaration
#
Defined in
#
Contracts
Ƭ Contracts: Object
#
Index signature
▪ [key: string]: BaseContract
#
Defined in
#
ContractsConfig
Ƭ ContractsConfig: { [key in keyof C]: ContractConfig }
#
Type parameters
#
Defined in
#
ECSCache
Ƭ ECSCache: Awaited<ReturnType<typeof getIndexDbECSCache>>
#
Defined in
network/src/workers/CacheStore.ts:13
#
Input
Ƭ Input: Config | Ack
#
Defined in
network/src/workers/SyncWorker.ts:61
#
Mappings
Ƭ Mappings: Object
#
Type parameters
#
Index signature
▪ [hashedContractId: string]: keyof C
#
Defined in
#
Network
Ƭ Network: Awaited<ReturnType<typeof createNetwork>>
#
Defined in
network/src/createNetwork.ts:12
#
NetworkComponentUpdate
Ƭ NetworkComponentUpdate: { [key in keyof C]: Object }[keyof C] & Object
#
Type parameters
#
Defined in
#
NetworkEvent
Ƭ NetworkEvent: NetworkComponentUpdate<C> | SystemCall<C>
#
Type parameters
#
Defined in
#
Providers
Ƭ Providers: ReturnType<typeof createProvider>
#
Defined in
network/src/createProvider.ts:8
#
State
Ƭ State: Map<number, ComponentValue>
#
Defined in
network/src/workers/CacheStore.ts:11
#
SyncStateStruct
Ƭ SyncStateStruct: Object
#
Type declaration
#
Defined in
#
SyncWorkerConfig
Ƭ SyncWorkerConfig: Object
#
Type declaration
#
Defined in
#
SystemCall
Ƭ SystemCall: Object
#
Type parameters
#
Type declaration
#
Defined in
#
SystemCallTransaction
Ƭ SystemCallTransaction: Object
#
Type declaration
#
Defined in
#
TopicsConfig
Ƭ TopicsConfig: { [ContractType in keyof C]: Object }
#
Type parameters
#
Defined in
#
TxQueue
Ƭ TxQueue: Cached<C>
#
Type parameters
#
Defined in
#
Variables
#
ContractSchemaValueArrayToElement
• Const
ContractSchemaValueArrayToElement: Object
#
Type declaration
#
Defined in
#
ContractSchemaValueId
• Const
ContractSchemaValueId: { [key in ContractSchemaValue]: string }
#
Defined in
#
GodID
• Const
GodID: EntityID
#
Defined in
network/src/workers/constants.ts:9
#
ack
• Const
ack: Object
#
Type declaration
#
Defined in
network/src/workers/SyncWorker.ts:60
#
Functions
#
createBlockNumberStream
▸ createBlockNumberStream(providers
, options?
): Object
Creates a stream of block numbers based on the block
event of the currently connected provider.
In case initialSync
is provided, this stream will also output a stream of past block numbers to drive replaying events.
#
Parameters
#
Returns
Object
Stream of block numbers based on connected provider's block
event.
#
Defined in
network/src/createBlockNumberStream.ts:15
#
createCacheStore
▸ createCacheStore(): Object
#
Returns
Object
#
Defined in
network/src/workers/CacheStore.ts:19
#
createContracts
▸ createContracts<C
>(config:
): Promise<Object>
Create an object of contracts connected to the currently connected provider.
#
Type parameters
#
Parameters
#
Returns
Promise<Object>
Object with contracts connected to the currently connected provider.
#
Defined in
network/src/createContracts.ts:13
#
createDecode
▸ createDecode(worldConfig
, provider
): Function
Create a function to decode raw component values. Fetches component schemas from the contracts and caches them.
#
Parameters
#
Returns
Function
Function to decode raw component values using their contract component id
▸ (componentId
, data
, componentAddress?
): Promise<ComponentValue>
#
Parameters
#
Returns
Promise<ComponentValue>
#
Defined in
network/src/workers/syncUtils.ts:357
#
createDecoder
▸ createDecoder<D
>(keys
, valueTypes
): Function
Construct a decoder function from given keys and valueTypes. The consumer is responsible for providing a type D matching the keys and valueTypes.
#
Type parameters
#
Parameters
#
Returns
Function
Function to decode encoded hex value to component value.
▸ (data
): D
#
Parameters
#
Returns
D
#
Defined in
network/src/createDecoder.ts:74
#
createEncoder
▸ createEncoder<D
>(keys
, valueTypes
): Function
Creates a function to automatically encode component values given a contract component schema.
#
Type parameters
#
Parameters
#
Returns
Function
Function to encode component values
▸ (value
): string
#
Parameters
#
Returns
string
#
Defined in
network/src/createEncoder.ts:11
#
createFaucetService
▸ createFaucetService(url
): RawClient<FromTsProtoServiceDefinition<Object>, Object>
Create a FaucetServiceClient
#
Parameters
#
Returns
RawClient<FromTsProtoServiceDefinition<Object>, Object>
FaucetServiceClient
#
Defined in
network/src/createFaucetService.ts:9
#
createFetchSystemCallsFromEvents
▸ createFetchSystemCallsFromEvents(provider
): Function
#
Parameters
#
Returns
Function
▸ (events
, blockNumber
): Promise<SystemCall<Components>[]>
#
Parameters
#
Returns
Promise<SystemCall<Components>[]>
#
Defined in
network/src/workers/syncUtils.ts:540
#
createFetchWorldEventsInBlockRange
▸ createFetchWorldEventsInBlockRange<C
>(provider
, worldConfig
, batch
, decode
): Function
Create a function to fetch World contract events in a given block range.
#
Type parameters
#
Parameters
#
Returns
Function
Function to fetch World contract events in a given block range.
▸ (from
, to
): Promise<NetworkComponentUpdate<C>[]>
#
Parameters
#
Returns
Promise<NetworkComponentUpdate<C>[]>
#
Defined in
network/src/workers/syncUtils.ts:396
#
createLatestEventStreamRPC
▸ createLatestEventStreamRPC(blockNumber$
, fetchWorldEvents
, fetchSystemCallsFromEvents?
): Observable<NetworkEvent>
Create a RxJS stream of NetworkComponentUpdates by listening to new blocks from the blockNumber$ stream and fetching the corresponding block from the connected RPC.
Dev
Only use if createLatestEventStreamService is not available.
#
Parameters
#
Returns
Observable<NetworkEvent>
Stream of NetworkComponentUpdates.
#
Defined in
network/src/workers/syncUtils.ts:254
#
createLatestEventStreamService
▸ createLatestEventStreamService(streamServiceUrl
, worldAddress
, transformWorldEvents
, includeSystemCalls
): Observable<NetworkEvent>
Create a RxJS stream of NetworkComponentUpdates by subscribing to a gRPC streaming service.
#
Parameters
#
Returns
Observable<NetworkEvent>
Stream of NetworkComponentUpdates.
#
Defined in
network/src/workers/syncUtils.ts:208
#
createNetwork
▸ createNetwork(initialConfig
): Promise<Object>
Set up network.
#
Parameters
#
Returns
Promise<Object>
Network object
#
Defined in
network/src/createNetwork.ts:20
#
createProvider
▸ createProvider(config
): Object
Create a JsonRpcProvider and WebsocketProvider pair
#
Parameters
#
Returns
Object
Provider pair: { json: JsonRpcProvider, ws: WebSocketProvider }
#
Defined in
network/src/createProvider.ts:19
#
createReconnectingProvider
▸ createReconnectingProvider(config
): Promise<Object>
Creates a provider pair that automatically updates if the config changes and automatically reconnects if the connection is lost.
#
Parameters
#
Returns
Promise<Object>
Automatically reconnecting provider pair that updates if the config changes.
#
Defined in
network/src/createProvider.ts:54
#
createRelayStream
▸ createRelayStream(signer
, url
, id
): Promise<Object>
Create a RelayService connection, including event$ and utils
#
Parameters
#
Returns
Promise<Object>
RelayService connection
#
Defined in
network/src/createRelayStream.ts:16
#
createSigner
▸ createSigner(privateKey
, providers
): Wallet
#
Parameters
#
Returns
Wallet
#
Defined in
#
createSnapshotClient
▸ createSnapshotClient(url
): ECSStateSnapshotServiceClient
Create a ECSStateSnapshotServiceClient
#
Parameters
#
Returns
ECSStateSnapshotServiceClient
ECSStateSnapshotServiceClient
#
Defined in
network/src/workers/syncUtils.ts:44
#
createStreamClient
▸ createStreamClient(url
): ECSStreamServiceClient
Create a ECSStreamServiceClient
#
Parameters
#
Returns
ECSStreamServiceClient
ECSStreamServiceClient
#
Defined in
network/src/workers/syncUtils.ts:53
#
createSyncWorker
▸ createSyncWorker<C
>(ack$?
): Object
Create a new SyncWorker (Sync.worker.ts) to performn contract/client state sync. The main thread and worker communicate via RxJS streams.
#
Type parameters
#
Parameters
#
Returns
Object
Object { ecsEvent$: Stream of network component updates synced by the SyncWorker, config$: RxJS subject to pass in config for the SyncWorker, dispose: function to dispose of the sync worker }
#
Defined in
network/src/createSyncWorker.ts:17
#
createSystemExecutor
▸ createSystemExecutor<T
>(world
, network
, systems
, interfaces
, gasPrice$
, options?
): Object
Create a system executor object. The system executor object is an object indexed by available system ids (given in the interfaces object) with tx-queue enabled system contracts as value.
#
Type parameters
#
Parameters
#
Returns
Object
Systems object to call system contracts.
#
Defined in
network/src/createSystemExecutor.ts:22
#
createTopics
▸ createTopics<C
>(config
): ContractTopics[]
#
Type parameters
#
Parameters
#
Returns
ContractTopics[]
#
Defined in
network/src/createTopics.ts:12
#
createTransformWorldEventsFromStream
▸ createTransformWorldEventsFromStream(decode
): Function
Create a function to transform World contract events from a stream service response chunk.
#
Parameters
#
Returns
Function
Function to transform World contract events from a stream service.
▸ (message
): Promise<NetworkComponentUpdate<Components>[]>
#
Parameters
#
Returns
Promise<NetworkComponentUpdate<Components>[]>
#
Defined in
network/src/workers/syncUtils.ts:456
#
createTxQueue
▸ createTxQueue<C
>(computedContracts
, network
, gasPrice$
, options?
): Object
The TxQueue takes care of nonce management, concurrency and caching calls if the contracts are not connected. Cached calls are passed to the queue once the contracts are available.
#
Type parameters
#
Parameters
#
Returns
Object
TxQueue object
#
Defined in
network/src/createTxQueue.ts:24
#
createWorldTopics
▸ createWorldTopics(): ContractTopics[]
Create World contract topics for the ComponentValueSet
and ComponentValueRemoved
events.
#
Returns
ContractTopics[]
World contract topics for the ComponentValueSet
and ComponentValueRemoved
events.
#
Defined in
network/src/workers/syncUtils.ts:382
#
ensureNetworkIsUp
▸ ensureNetworkIsUp(provider
, wssProvider?
): Promise<void>
Await network to be reachable.
#
Parameters
#
Returns
Promise<void>
Promise resolving once the network is reachable
#
Defined in
network/src/networkUtils.ts:22
#
fetchBlock
▸ fetchBlock(provider
, requireMinimumBlockNumber?
): Promise<Block>
Fetch the latest Ethereum block
#
Parameters
#
Returns
Promise<Block>
Promise resolving with the latest Ethereum block
#
Defined in
network/src/networkUtils.ts:38
#
fetchEventsInBlockRange
▸ fetchEventsInBlockRange<C
>(provider
, topics
, startBlockNumber
, endBlockNumber
, contracts
, supportsBatchQueries?
): Promise<ContractEvent<C>[]>
Fetch events from block range, ordered by block, transaction index and log index
#
Type parameters
#
Parameters
#
Returns
Promise<ContractEvent<C>[]>
Promise resolving with an array of ContractEvents
#
Defined in
network/src/networkUtils.ts:143
#
fetchEventsInBlockRangeChunked
▸ fetchEventsInBlockRangeChunked(fetchWorldEvents
, fromBlockNumber
, toBlockNumber
, interval?
, setPercentage?
): Promise<NetworkComponentUpdate<Components>[]>
Fetch ECS events from contracts in the given block range.
#
Parameters
#
Returns
Promise<NetworkComponentUpdate<Components>[]>
Promise resolving with array containing the contract ECS events in the given block range.
#
Defined in
network/src/workers/syncUtils.ts:291
#
fetchLogs
▸ fetchLogs<C
>(provider
, topics
, startBlockNumber
, endBlockNumber
, contracts
, requireMinimumBlockNumber?
): Promise<Log[]>
Fetch logs with the given topics from a given block range.
#
Type parameters
#
Parameters
#
Returns
Promise<Log[]>
Promise resolving with an array of logs from the specified block range and topics
#
Defined in
network/src/networkUtils.ts:70
#
fetchSnapshot
▸ fetchSnapshot(snapshotClient
, worldAddress
, decode
): Promise<CacheStore>
Load from the remote snapshot service.
Deprecated
this util will be removed in a future version, use fetchSnapshotChunked instead
#
Parameters
#
Returns
Promise<CacheStore>
Promise resolving with CacheStore containing the snapshot state.
#
Defined in
network/src/workers/syncUtils.ts:88
#
fetchSnapshotChunked
▸ fetchSnapshotChunked(snapshotClient
, worldAddress
, decode
, numChunks?
, setPercentage?
, pruneOptions?
): Promise<CacheStore>
Load from the remote snapshot service in chunks via a stream.
#
Parameters
#
Returns
Promise<CacheStore>
Promise resolving with CacheStore containing the snapshot state.
#
Defined in
network/src/workers/syncUtils.ts:113
#
fetchStateInBlockRange
▸ fetchStateInBlockRange(fetchWorldEvents
, fromBlockNumber
, toBlockNumber
, interval?
, setPercentage?
): Promise<CacheStore>
Fetch ECS state from contracts in the given block range.
#
Parameters
#
Returns
Promise<CacheStore>
Promise resolving with CacheStore containing the contract ECS state in the given block range.
#
Defined in
network/src/workers/syncUtils.ts:326
#
flattenValue
▸ flattenValue<V
>(value
, valueType
): ContractSchemaValueTypes[V]
#
Type parameters
#
Parameters
#
Returns
ContractSchemaValueTypes[V]
#
Defined in
network/src/createDecoder.ts:10
#
formatComponentID
▸ formatComponentID(componentID
): string
#
Parameters
#
Returns
string
#
Defined in
#
formatEntityID
▸ formatEntityID(entityID
): EntityID
#
Parameters
#
Returns
EntityID
#
Defined in
#
getCacheId
▸ getCacheId(namespace
, chainId
, worldAddress
): string
#
Parameters
#
Returns
string
#
Defined in
network/src/workers/CacheStore.ts:15
#
getCacheStoreEntries
▸ getCacheStoreEntries<Cm
>(__namedParameters
): IterableIterator<NetworkComponentUpdate<Cm>>
#
Type parameters
#
Parameters
#
Returns
IterableIterator<NetworkComponentUpdate<Cm>>
#
Defined in
network/src/workers/CacheStore.ts:73
#
getIndexDBCacheStoreBlockNumber
▸ getIndexDBCacheStoreBlockNumber(cache
): Promise<number>
#
Parameters
#
Returns
Promise<number>
#
Defined in
network/src/workers/CacheStore.ts:149
#
getIndexDbECSCache
▸ getIndexDbECSCache(chainId
, worldAddress
, version?
, idb?
): Promise<Object>
#
Parameters
#
Returns
Promise<Object>
#
Defined in
network/src/workers/CacheStore.ts:153
#
getRevertReason
▸ getRevertReason(txHash
, provider
): Promise<string>
Get the revert reason from a given transaction hash
#
Parameters
#
Returns
Promise<string>
Promise resolving with revert reason string
#
Defined in
network/src/networkUtils.ts:227
#
getSnapshotBlockNumber
▸ getSnapshotBlockNumber(snapshotClient
, worldAddress
): Promise<number>
Return the snapshot block number.
#
Parameters
#
Returns
Promise<number>
Snapsot block number
#
Defined in
network/src/workers/syncUtils.ts:64
#
isNetworkComponentUpdateEvent
▸ isNetworkComponentUpdateEvent<C
>(e
): e is NetworkComponentUpdate<C>
#
Type parameters
#
Parameters
#
Returns
e is NetworkComponentUpdate<C>
#
Defined in
#
isSystemCallEvent
▸ isSystemCallEvent<C
>(e
): e is SystemCall<C>
#
Type parameters
#
Parameters
#
Returns
e is SystemCall<C>
#
Defined in
#
loadIndexDbCacheStore
▸ loadIndexDbCacheStore(cache
): Promise<CacheStore>
#
Parameters
#
Returns
Promise<CacheStore>
#
Defined in
network/src/workers/CacheStore.ts:128
#
mergeCacheStores
▸ mergeCacheStores(stores
): CacheStore
#
Parameters
#
Returns
CacheStore
#
Defined in
network/src/workers/CacheStore.ts:102
#
messagePayload
▸ messagePayload(msg
): string
#
Parameters
#
Returns
string
#
Defined in
#
parseSystemCallsFromStreamEvents
▸ parseSystemCallsFromStreamEvents(events
): SystemCall<Components>[]
#
Parameters
#
Returns
SystemCall<Components>[]
#
Defined in
network/src/workers/syncUtils.ts:520
#
reduceFetchedState
▸ reduceFetchedState(response
, cacheStore
, decode
): Promise<void>
Reduces a snapshot response by storing corresponding ECS events into the cache store.
Deprecated
this util will be removed in a future version, use reduceFetchedStateV2 instead
#
Parameters
#
Returns
Promise<void>
Promise resolving once state is reduced into CacheStore.
#
Defined in
network/src/workers/syncUtils.ts:158
#
reduceFetchedStateV2
▸ reduceFetchedStateV2(response
, cacheStore
, decode
): Promise<void>
Reduces a snapshot response by storing corresponding ECS events into the cache store.
#
Parameters
#
Returns
Promise<void>
Promise resolving once state is reduced into CacheStore.
#
Defined in
network/src/workers/syncUtils.ts:181
#
saveCacheStoreToIndexDb
▸ saveCacheStoreToIndexDb(cache
, store
): Promise<void>
#
Parameters
#
Returns
Promise<void>
#
Defined in
network/src/workers/CacheStore.ts:120
#
storeEvent
▸ storeEvent<Cm
>(cacheStore
, __namedParameters
): void
#
Type parameters
#
Parameters
#
Returns
void
#
Defined in
network/src/workers/CacheStore.ts:30
#
storeEvents
▸ storeEvents<Cm
>(cacheStore
, events
): void
#
Type parameters
#
Parameters
#
Returns
void
#
Defined in
network/src/workers/CacheStore.ts:64