22 * Importing 'timers' ensures `setImmediate` is available in browsers,
33 * as it's polyfilled by `timers-browserify`. In Node.js, it's already global.
44 */
5- import 'timers'
65import 'reflect-metadata'
6+ import 'timers'
77import './utils/PatchTsyringe'
88
99import { DhtAddress } from '@streamr/dht'
1010import { ProxyDirection , StreamPartDeliveryOptions } from '@streamr/trackerless-network'
11- import { DEFAULT_PARTITION_COUNT , EthereumAddress , HexString , Logger , StreamID ,
12- TheGraphClient , toEthereumAddress , toUserId } from '@streamr/utils'
11+ import {
12+ DEFAULT_PARTITION_COUNT , EthereumAddress , HexString , Logger , StreamID ,
13+ TheGraphClient , toEthereumAddress , toUserId
14+ } from '@streamr/utils'
1315import type { Overrides } from 'ethers'
1416import EventEmitter from 'eventemitter3'
1517import merge from 'lodash/merge'
1618import omit from 'lodash/omit'
1719import { container as rootContainer } from 'tsyringe'
1820import { PublishMetadata , Publisher } from '../src/publish/Publisher'
19- import { Identity , IdentityInjectionToken , SignerWithProvider } from './identity/Identity'
2021import {
2122 ConfigInjectionToken ,
2223 NetworkPeerDescriptor ,
@@ -29,6 +30,7 @@ import { DestroySignal } from './DestroySignal'
2930import { Message , convertStreamMessageToMessage } from './Message'
3031import { MetricsPublisher } from './MetricsPublisher'
3132import { NetworkNodeFacade } from './NetworkNodeFacade'
33+ import { ProxyNodeFinder } from './ProxyNodeFinder'
3234import { RpcProviderSource } from './RpcProviderSource'
3335import { Stream } from './Stream'
3436import { StreamIDBuilder } from './StreamIDBuilder'
@@ -37,6 +39,7 @@ import { ChainEventPoller } from './contracts/ChainEventPoller'
3739import { ContractFactory } from './contracts/ContractFactory'
3840import { Operator } from './contracts/Operator'
3941import { OperatorRegistry } from './contracts/OperatorRegistry'
42+ import { SponsorshipFactory } from './contracts/SponsorshipFactory'
4043import { StorageNodeMetadata , StorageNodeRegistry } from './contracts/StorageNodeRegistry'
4144import { StreamRegistry } from './contracts/StreamRegistry'
4245import { StreamStorageRegistry } from './contracts/StreamStorageRegistry'
@@ -46,7 +49,10 @@ import { LocalGroupKeyStore, UpdateEncryptionKeyOptions } from './encryption/Loc
4649import { PublisherKeyExchange } from './encryption/PublisherKeyExchange'
4750import { getEthersOverrides as _getEthersOverrides } from './ethereumUtils'
4851import { StreamrClientEventEmitter , StreamrClientEvents } from './events'
52+ import { Identity , IdentityInjectionToken , SignerWithProvider } from './identity/Identity'
53+ import { createIdentityFromConfig } from './identity/IdentityMapping'
4954import { PermissionAssignment , PermissionQuery , toInternalPermissionAssignment , toInternalPermissionQuery } from './permission'
55+ import { StreamMessage } from './protocol/StreamMessage'
5056import { MessageListener , MessageStream } from './subscribe/MessageStream'
5157import { ResendOptions , Resends , toInternalResendOptions } from './subscribe/Resends'
5258import { Subscriber } from './subscribe/Subscriber'
@@ -57,12 +63,9 @@ import { StreamDefinition } from './types'
5763import { map } from './utils/GeneratorUtils'
5864import { LoggerFactory } from './utils/LoggerFactory'
5965import { addStreamToStorageNode } from './utils/addStreamToStorageNode'
66+ import { assertCompliantIdentity } from './utils/encryptionCompliance'
6067import { pOnce } from './utils/promises'
6168import { convertPeerDescriptorToNetworkPeerDescriptor , createTheGraphClient } from './utils/utils'
62- import { createIdentityFromConfig } from './identity/IdentityMapping'
63- import { assertCompliantIdentity } from './utils/encryptionCompliance'
64- import { SponsorshipFactory } from './contracts/SponsorshipFactory'
65- import { ProxyNodeFinder } from './ProxyNodeFinder'
6669
6770// TODO: this type only exists to enable tsdoc to generate proper documentation
6871export type SubscribeOptions = StreamDefinition & ExtraSubscribeOptions
@@ -181,6 +184,11 @@ export class StreamrClient {
181184 return convertStreamMessageToMessage ( result )
182185 }
183186
187+ async publishRaw ( message : StreamMessage , deliveryOptions ?: StreamPartDeliveryOptions ) : Promise < void > {
188+ await this . node . broadcast ( message , deliveryOptions )
189+ this . eventEmitter . emit ( 'messagePublished' , message )
190+ }
191+
184192 /**
185193 * Manually updates the encryption key used when publishing messages to a given stream.
186194 */
0 commit comments